Здраствуй, All!
Есть запрос
select t1.* from "apple_TMP" t1
where t1."bsch"||t1."hvost" not in (select t2."s20" from "s13_20" t2)
В автомате индекс для t2.s13_20 подхватывается а составной индекс для
t1."bsch"||t1."hvost" - нет. Пытаюсь ручками прописать план:
select t1.* from "apple_TMP" t1
where t1."bsch"||t1."hvost" not in (select t2."s20" from "s13_20" t2 PLAN (T2 INDEX (S13_20_S20)) )
PLAN (T1 index(apple_tmp_idx4) )
говорит:
index cannot be used in the specified plan
.
index APPLE_TMP_IDX4 cannot be used in the specified plan.
Тоесть составной индекс при конкатенации строк читать нежалает... Соответственно вопрос: как бы его заставить читать, а то в одной таблице 190т. строк а во второй 80т.строк....
Мож подскажите чего....
План запроса индекс нехватает...
-
- Сообщения: 7
- Зарегистрирован: 24 авг 2005, 17:32
Конкатенация есть выражение, а не два поля. Что индекс по интам (ID,IDParent) не подхватится по условию where ID+IDParent изумления не вызывает? Варианты:
а) Если запросы такого типа регулярны, вести конкатенацию дополнительным полем в before триггерах и слепить по нему индекс
б) Если разовые - забить и потерпеть изредка
в) Ждать FB2 с индексами по выражениям
а) Если запросы такого типа регулярны, вести конкатенацию дополнительным полем в before триггерах и слепить по нему индекс
б) Если разовые - забить и потерпеть изредка
в) Ждать FB2 с индексами по выражениям
-
- Сообщения: 7
- Зарегистрирован: 24 авг 2005, 17:32