Spec-Zone.ru › MariaDB

ИНДЕКС ПРИНУЖДЕНИЯ

Описание

Принуждение к использованию индекса в основном полезно, когда оптимизатор решает выполнить сканирование таблицы, даже если известно, что использование индекса было бы лучше. (Оптимизатор может решить выполнить сканирование таблицы, даже если доступен индекс, когда он считает, что большинство или все строки будут совпадать, и он может избежать накладных расходов на использование индекса).

FORCE INDEX работает, учитывая только заданные индексы (как и в USE_INDEX), но дополнительно он сообщает оптимизатору рассматривать сканирование таблицы как очень дорогостоящую операцию. Однако если ни один из «принудительных» индексов не может быть использован, то сканирование таблицы всё равно будет выполнено.

FORCE INDEX не может принудить к использованию проигнорированного индекса — он будет обрабатываться так, как будто его не существует.

Пример

CREATE INDEX Name ON City (Name);
EXPLAIN SELECT Name,CountryCode FROM City FORCE INDEX (Name)
WHERE name>="A" and CountryCode >="A";

Это даёт:

id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	City	range	Name	Name	35	NULL	4079	Using where

Префиксы индексов

При использовании подсказок индекса (USE, FORCE или IGNORE INDEX) имя индекса также может быть недвусмысленным префиксом имени индекса.

См. также

  • Подсказки индексов: как принудить планы запросов для более подробной информации
  • USE INDEX
  • IGNORE INDEX
  • Проигнорированные индексы
Содержимое, воспроизведенное на этом сайте, является собственностью его соответствующих владельцев, и это содержание не проверяется заранее MariaDB. Мнения, информация и мнения, выраженные этим содержанием, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/force-index/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API