Код: Выделить всё
select
main.oorder,
main.id,
ddate,
ttime,
phone2,
ordersstate.state,
phonetypes.ttype,
vvalue1, vvalue2
vvalue3, vvalue4,
vvalue5, vvalue6,
vvalue7, vvalue8,
vvalue9, vvalue10
from allorders main
inner join ordrsstate ordersstate on ordersstate.id = main.state
inner join phonetypes phonetypes on phonetypes.id = main.ttype
inner join ordersparams ordersparams on ordersparams.oorder = main.id
where
(main.ddate >= '2006-05-03') and (main.ddate <= '2006-05-03')
and (allorders.city = 1)
and (main.oorder in (1527, 1088, 145, 1048, 1108, 1117, 1137, 1148))
PLAN JOIN (ORDERSPARAMS NATURAL,MAIN INDEX (RDB$PRIMARY15,ALLORDERS_OORDER,ALLORDERS_OORDER),PHONETYPES INDEX (PK_PHONETYPES),ORDERSSTATE INDEX (ORDRSSTATE_ID))
выполняется - бесконечно (выбраться должно записей 50)
меняем последнюю строчку условия на (main.oorder = 145)
вот план нового запроса
PLAN JOIN (MAIN INDEX (ALLORDERS_OORDER,ALLORDERS_DATE2),PHONETYPES INDEX (PK_PHONETYPES),ORDERSPARAMS INDEX (ORDERSPARAMS_OORDER),ORDERSSTATE INDEX (ORDRSSTATE_ID))
отрабатывает мгновенно
вставляю второй план в первый запрос - отрабатывает мгновенно
убираю два верхних иннер жоина - мгновенно
убираю один нижний жоин - мгновенно
почему так?