Уважаемые гуру! :)

Столкнулся со странностью.

FB2.1beta2, SQL Dialect 1.

Выполняю запрос:

    SELECT *
    FROM
        fxd$documentmove M,
        fxd$document D
    WHERE
        M.iddocument=D.iddocument
        AND D.datewhen<='01-jan-2007'
        AND M.idaccd='221.1'

Получаю:

PLAN JOIN (D INDEX (FXD$DOCUMENT_IDX1), M INDEX (FK_FXD_DOCUMENT_1, FK_FXD_DOCUMENT_2))

Adapted Plan
PLAN JOIN (D INDEX (FXD$DOCUMENT_IDX1), M INDEX (FK_FXD_DOCUMENT_1, FK_FXD_DOCUMENT_2))

------ Performance info ------
Prepare time = 0ms
Execute time = 5s 609ms

Выполняю тот же запрос но без одного из условий:

    SELECT *
    FROM
        fxd$documentmove M,
        fxd$document D
    WHERE
        M.iddocument=D.iddocument
        --AND D.datewhen<='01-jan-2007'
        AND M.idaccd='221.1'

В результате

Plan
PLAN JOIN (M INDEX (FK_FXD_DOCUMENT_2), D INDEX (RDB$PRIMARY7))

Adapted Plan
PLAN JOIN (M INDEX (FK_FXD_DOCUMENT_2), D INDEX (INTEG_27))

------ Performance info ------
Prepare time = 0ms
Execute time = 953ms

Вот DDL таблицы fxd$document

create table fxd$document (
    iddocument        varchar(40) not null,
    sysdate           date,
    datewhen          date,
    scomment          varchar(250),
    idclass           integer not null,
    status            integer,
    seqid             integer not null,
    iddocumentparent  varchar(40),
    docrateusd        numeric(15,4),
    docrateeur        numeric(15,4)
);


alter table fxd$document add primary key (iddocument);

alter table fxd$document add constraint fk_document_2 foreign key (idclass) references fxd$objclass (idclass); alter table fxd$document add constraint fk_document_4 foreign key (iddocumentparent) references fxd$document (iddocument);

create index fxd$document_idx1 on fxd$document (datewhen);
create index fxd$document_idx2 on fxd$document (iddocument);

то есть индекс по datewhen есть. Думал может индекс не в том направлении - попробовал в условии поменять "больше" на "меньше" - такая же фигня.
Статистика индекса fxd$document_idx1 перестроена.

Подскажите, почему у меня лыжи не едут?

Ответить