Насколько я понимаю, когда мы запускаем SQL-запрос с COUNT
, DISTINCT
или LIKE %query%
(подстановочные знаки с обеих сторон), индексы не могут использоваться и база данных должна выполнять полное сканирование таблицы.Можем ли мы повысить производительность запросов COUNT, DISTINCT и LIKE?
Есть ли способ повысить производительность этих запросов?
Действительно ли они не могут использовать индексы, или мы можем это исправить?
Можем ли мы сделать проверку только индекса, если нам нужно вернуть только один столбец? Например: select count(id) from MY_TABLE
: возможно, в этом случае мы можем выполнить только проверку по индексу и избежать попадания всей таблицы, если у нас есть индекс на «id»?
Мой вопрос имеет общее значение: не могли бы вы дать мне некоторые рекомендации по эффективности, если мы должны использовать упомянутых операторов?
UPDATE Что касается меня, то я использую PostgreSQL.
Какие РСУБД? SQL Server будет использовать более узкий индекс в 'id' (если он доступен) для' select count (id) из MY_TABLE' –
И даже без каких-либо условий 'SELECT DISTINCT a, b FROM t;' будет использовать индекс на '(a, b) 'или' (b, a) ' –
На какой платформе базы данных? Например, Postgres имеет расширение под названием [Wildspeed] (http://www.sai.msu.su/~megera/wiki/wildspeed), которое позволяет индексировать запросы 'LIKE'. –