![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить INTERBASE изменить план [D7, IB5.x, IB6.x]
den_777 © (2005-02-21 16:43:00)Проблема в следующем. Предположим есть таблица со следующими полями
field1 integer,
field2 integer,
field3 integer,
field4 varchar(10),
field5 varchar(5),
field6 varchar(2),
field7 varchar(2)
создан индекс
CREATE INDEX IDX1 ON MYTBL(FIElD4,FIElD5,FIElD6,FIElD7);
Выполняется запрос
select distinct FIElD4,FIElD5,FIElD6,FIElD7 from MYTBL
И Intebase 5.6 и FireBird1.5.1 строят один и тот же план:
PLAN (MYTBL NATURAL)
а план подставленный вручную
PLAN ((MYTBL index (IDX1)))
пониматься не хочет.
Это так и заложено в идеологии баз с многоверсионностью записей или просто недоработка INTERBASE, ведь вся информация для моего запроса может быть извлечена из индекса, а INTEBASE никак не хочет этого делать.
den_777 (2005-02-21 16:59:00) [21]
> ИБ вроде не умеет брать инфу из индекса
Именно про это я и справшивал. Умеет или нет брать INTERBASE информацию из индекса, а желаемый мною план уже написан выше
Вопрос не случаен, просто когда я работал с INFORMIX, там даже такое понятие в сосавляемом оптимизаторе плане было "INDEX ONLY", т.е когда в запросе перечислены только поля, которые входят в какие либо индексы по этой таблице, то обращение к самой таблице не будет вовсе.
Sergey13 (2005-02-21 16:52:00) [22]2den_777
А какой план ты хотел увидеть для чтения всей таблицы? ИБ вроде не умеет брать инфу из индекса. Хотя может я и ошибаюсь.
Vemer (2005-02-21 16:47:00) [23]forum.ibase.ru
sql.ru