MySQL может создавать индексы по нескольким столбцам. Индекс может
включать в себя до 15 столбцов (на столбцах CHAR
и VARCHAR
можно также
использовать префикс столбца в качестве части индекса)
Многостолбцовый индекс может рассматриваться как упорядоченный массив, содержащий величины, созданные конкатенацией величин проиндексированных столбцов.
MySQL использует многостолбцовые индексы таким образом, что запросы
выполняются быстро, когда указывается известная часть для первого столбца
в индексе в выражении WHERE
, даже если не заданы величины для других
столбцов.
Предположим, создается следующая таблица:
mysql> CREATE TABLE test ( -> id INT NOT NULL, -> last_name CHAR(30) NOT NULL, -> first_name CHAR(30) NOT NULL, -> PRIMARY KEY (id), -> INDEX name (last_name,first_name));
Индекс name
является индексом по столбцам last_name
и first_name
. Этот
индекс будет применяться для запросов, указывающих величины в известной
области для last_name
или для обоих столбцов last_name
и first_name
. Таким
образом, индекс name
будет использоваться в следующих запросах:
mysql> SELECT * FROM test WHERE last_name="Widenius"; mysql> SELECT * FROM test WHERE last_name="Widenius" -> AND first_name="Michael"; mysql> SELECT * FROM test WHERE last_name="Widenius" -> AND (first_name="Michael" OR first_name="Monty"); mysql> SELECT * FROM test WHERE last_name="Widenius" -> AND first_name >="M" AND first_name < "N";
Чтобы получить более подробную информацию о том, как в MySQL используются индексы для улучшения работы запросов, See Раздел 5.4.3, «Использование индексов в MySQL».