оптимизация запросов sqlite - PullRequest
1 голос
/ 16 июля 2009

Запрос

SELECT * FROM Table WHERE Path LIKE 'geo-Africa-Egypt-%'

можно оптимизировать как:

SELECT * FROM Table WHERE Path >= 'geo-Africa-Egypt-' AND Path < 'geo-Africa-Egypt-zzz' 

Но как это сделать:

select * from foodDb where Food LIKE '%apples%";

как это можно оптимизировать?

Ответы [ 2 ]

1 голос
/ 16 июля 2009

Один из вариантов - избыточные данные. Если вы запрашиваете много для некоторого фиксированного набора строк, встречающегося в середине некоторого столбца, добавьте еще один столбец, содержащий информацию о том, можно ли найти конкретную строку в другом столбце.

Другой вариант для произвольных, но все еще токенизируемых строк - создать таблицу словаря, в которой у вас есть токены (например, apples) и ссылки на внешние ключи на фактическую таблицу, в которой находится токен.

Как правило, sqlite не очень хорошо подходит для полнотекстового поиска.

0 голосов
/ 16 июля 2009

Было бы удивительно, если бы это было быстрее, но вы можете попробовать GLOB вместо LIKE и сравнить;

SELECT * FROM foodDb WHERE Food GLOB '*apples*'; 
...