Господа, возникла проблема с Firebird.
Есть вот такой запрос
DELETE FROM T1 WHERE T1.ID1 IN (SELECT T2.ID FROM T2 WHERE T2.ID1 = :param1)
Индексы по T1.ID1 и T2.ID1 имеются, T2.ID – первичный ключ.
Кажется (мне, по крайней мере) естественным, что нужно выбрать все записи из TD, используя индекс по T2.ID1, а удалять записи из T1, используя индекс по T1.ID1. Но Firebird поступил странно: по T2 он использует первичный ключ, а с T1 вообще работает по натуралу, что приводит к жутким тормозам. К ...
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=83879