Полезен ли поиск по подстроке с LIKE по индексу? - PullRequest
0 голосов
/ 10 апреля 2020

Допустим, следующее определение таблицы в HSQLDB:

create table message(id varchar(255) primary key not null, data clob not null);

Будет ли индекс, который HSQLDB создает автоматически при id (являющийся первичным ключом), ускорить поиск по подстроке, как показано ниже?

select * from message where id like 'foo:%'

1 Ответ

1 голос
/ 10 апреля 2020

По-видимому, для поиска по подстроке используется индекс по этому столбцу.

Запуск

explain plan for select * from message where id like 'foo:%'

дает мне

…
access=INDEX PRED
…

, как при простом сравнении знака равенства , Кажется, это работает для любой подстроки, например, '%foo%', а не только для начала строки.

Для сравнения, если я попробую то же самое для столбца data (который не проиндексирован и, следовательно, требует полное сканирование таблицы), я получаю

…
access=FULL SCAN
…
...