SQLite не использует индекс при использовании конкатенации - PullRequest
1 голос
/ 10 июля 2011

Я использую следующую инструкцию SQL для SQLite:

select * from words where \"word\" like ? || '%' || ? ;

Для привязки параметров к первой и последней букве.Я проверил это как с индексом в столбце word, так и без него, и результаты совпадают.Тем не менее, при выполнении запросов как

select * from words where \"word\" like 'a%a';

и т. Д.(то есть при жестком кодировании каждого значения вместо использования ||, при индексации запрос выполняется примерно в 10 раз быстрее.

Может кто-нибудь показать мне, как использовать индекс и оба параметра?

1 Ответ

0 голосов
/ 10 июля 2011

Я нашел ответ благодаря списку рассылки sqlite.Здесь говорится (http://sqlite.org/optoverview.html), раздел 4: «Правая часть LIKE или GLOB должна быть либо строковым литералом, либо параметром, связанным со строковым литералом, который не начинается с символа подстановки.»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...