Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all articles
Browse latest Browse all 1677

WHERE Field <> '' не использует индекс

$
0
0
Нужно получить все записи, с непустым полем orientir
SELECT ORIENTIR FROM APART WHERE ORIENTIR <> ''

или
SELECT ORIENTIR FROM APART WHERE ORIENTIR IS DISTINCT FROM NULL

или
SELECT ORIENTIR FROM APART WHERE ORIENTIR IS NOT NULL


план
PLAN (APART NATURAL)


Проблема в том, что вышеуказанные запросы не хотят использовать индекс.

скрипт таблицы:
CREATE COLLATION NOCASE_COLL FOR WIN1251 FROM PXW_CYRL CASE INSENSITIVE;
...
...

CREATE TABLE APART (
    ORIENTIR STRING255 COLLATE NOCASE_COLL /* STRING255 = VARCHAR(255) */,

...
...
CREATE INDEX APART_IDX_ORIENTIR ON APART (ORIENTIR);


Но если использовать = вместо <>, то
план
PLAN (APART INDEX (APART_IDX_ORIENTIR))



Добавлю. В таблице (в этом поле) были данные. Я не создавал нового поля. Я создал новый "COLLATION NOCASE_COLL", изменил COLLATION у таблицы, а затем создал индекс.

Viewing all articles
Browse latest Browse all 1677

Trending Articles