Конференция "Базы" » План запроса vs. время выполнения [D7, Firebird 1.5]
 
  • RWolf © (21.05.10 12:11) [0]
    создаём и заполняем такую таблицу:

    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 возвращает неправильный план выполнения), или я неправ?
  • turbouser © (21.05.10 12:22) [1]

    >
    > RWolf ©   (21.05.10 12:11)  

    Попробуй обновить статистику для индекса
  • turbouser © (21.05.10 12:23) [2]
    Вообще, у FB (1.5 - точно) были замечены странности с планами.
  • RWolf © (21.05.10 15:13) [3]
    [2]
    Да, FB 2.1 показывает другой план:
    PLAN (D ORDER PK_MYTABLE INDEX (IDX_DT))
 
Конференция "Базы" » План запроса vs. время выполнения [D7, Firebird 1.5]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]