НРАВИТСЯ в SQLite (и даже MysQL) - PullRequest
4 голосов
/ 04 октября 2011

Будет ли ключевое слово LIKE использовать индекс в SQLite и / или MySQL?

Я бы понял, что подстановочный знак может не использовать индекс, но как насчет начала с сравнения?

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

Это зависит от:

WHERE field1 LIKE 'test'  << can use index
WHERE field1 LIKE 'test%' << can also use index
WHERE field1 LIKE '%test' << cannot use index
WHERE field1 LIKE '_test' << cannot use index

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

Некоторые базы данных, такие как PostgreSQL, имеют приемы, которые позволяют использовать индексы во всех случаях, но MySQL и SQLite этого не делают.

2 голосов
/ 04 октября 2011

Это может помочь вам: Как MySQL использует индексы .

...