Отлично.pticelov писал(а):2 cybermax
переделка запроса с явным указанием join изменила план и исправила время выполнения (работает мгновенно)
2 dimitr: с тебя поллитра

Меня могут поправить, но на мой взгляд ситуация выглядит следующим образом:pticelov писал(а):А вот про разделение индексов нельзя ли подробней? Я всегда был уверен в прямо обратном: при поиске по двум ключам с "and" комбинированный индекс предпочтительней, чем 2 раздельных. И файрбирд при наличии выбора (раздельные индексы и комбинированный) выбирает комбинированный.
Не всегда одиночные индексы лучше... Например, для быстрой сортировки по ФИО, нужен индекс по ФИО...pticelov писал(а):В памяти всплыл mysql, для которого индекс по нескольким полям - вообще единственный выход, поскольку он более одного индекса в запросе использовать не желает. А тут получается прямо обратный вывод.
В смысле на багу?pticelov писал(а):У меня такое ощущение, что я на какую-то багу напоролся.
Неправда!pticelov писал(а): Проверка по ФИО может дать 10000 результатов. по адресу - 1. И наоборот. Пусть оптимизирует оптимизатор.
ну, тут мораль такая - гистограмм распределения значений в индексе у нас нет, да и для строк это сложновато (разве что первую букву можно использовать). Поэтому у оптимизатора есть только оценка распределения в виде числа повторов ключей (Total Dup) и максимального числа ключей в одной группе (Max Dup). А поскольку распределение групп одинаковых ключей среднестатистическим не бывает, оптимизатор, разумеется, не может понять, результатом выборки по ключу будет 1 ключ (минимальный вариант) или MaxDup ключей (максимальный вариант). Это если на равенство проверять.Неправда!