Buy this Reference Manual in softcover from Barnes & Noble!
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 section 5.4.3 Использование индексов в MySQL.
Posted by [name withheld] on Thursday November 14 2002, @12:06am | [Delete] [Edit] |
I had a situation where I wanted a combination
of two columns to have a unique value. (It was
an ip address and an auto-increment reference
to a different table - I wanted to record that a
certain action had been associated with a certain
IP address, but I only wanted to note that it had
happened once). The simple thing to do was to
create a unique index over those two columns.
Duplicates fail insertion.
Add your own comment.