Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

План запроса vs. время выполнения [D7, Firebird 1.5]


RWolf ©   (2010-05-21 12:11:00) 

создаём и заполняем такую таблицу:

CREATE TABLE MYTABLE (
   ROWID  INTEGER NOT NULL,
   DT       TIMESTAMP,
   DATA    VARCHAR(100),
   CONSTRAINT PK_MYTABLE PRIMARY KEY (ROWID)
);
CREATE INDEX IDX_DT ON MYTABLE (DT);


и делаем такой запрос

SELECT * FROM MYTABLE
WHERE DT BETWEEN '1.1.2009' AND '1.6.2009'
ORDER BY ROWID


Если индекс IDX_DT включен, IB Expert показывает, что план запроса выглядит так:
PLAN (D ORDER PK_MYTABLE),
и что было выполнено 3 тыс. чтений (indexed reads) из таблицы.

Если индекс выключить, IB Expert рапортует уже о 800 тыс. чтений (соответственно, время выполнения подросло до 4 сек), но план запроса выглядит точно так же.

По идее, планы должны различаться (а значит, FB возвращает неправильный план выполнения), или я неправ?


RWolf   (2010-05-21 15:13:00) [1]

[2]
Да, FB 2.1 показывает другой план:
PLAN (D ORDER PK_MYTABLE INDEX (IDX_DT))


turbouser   (2010-05-21 12:23:00) [2]

Вообще, у FB (1.5 - точно) были замечены странности с планами.


turbouser   (2010-05-21 12:22:00) [3]


>
> RWolf ©   (21.05.10 12:11)  

Попробуй обновить статистику для индекса


Наверх

Титульная страница Поиск, карта сайта Написать письмо