Страница 1 из 1

План запроса индекс нехватает...

Добавлено: 31 авг 2005, 15:01
aleks26rus
Здраствуй, 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т.строк....
Мож подскажите чего....

Добавлено: 31 авг 2005, 15:13
Merlin
Конкатенация есть выражение, а не два поля. Что индекс по интам (ID,IDParent) не подхватится по условию where ID+IDParent изумления не вызывает? Варианты:

а) Если запросы такого типа регулярны, вести конкатенацию дополнительным полем в before триггерах и слепить по нему индекс
б) Если разовые - забить и потерпеть изредка
в) Ждать FB2 с индексами по выражениям

Добавлено: 31 авг 2005, 15:36
dimitr
вот любитель кросспостинга ведь...

Добавлено: 31 авг 2005, 15:43
aleks26rus
dimitr писал(а):вот любитель кросспостинга ведь...
Ну дык .... :)

Добавлено: 31 авг 2005, 15:52
Merlin
Иэхх, надо таки было канделябром, лоханулся...