7.4.4.多列索引
7.4.4. 多列索引
MySQL可以為多個列創建索引。一個索引可以包括15個列。對于某些列類型,可以索引列的前綴(參見7.4.3節,“列索引”)。
多列索引可以視為包含通過連接索引列的值而創建的值的排序的數組。
MySQL按這樣的方式使用多列索引:當你在WHERE子句中為索引的第1個列指定已知的數量時,查詢很快,即使你沒有指定其它列的值。
假定表具有下面的結構:
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索引用于下面的查詢:
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test
WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test
WHERE last_name='Widenius'
AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test
WHERE last_name='Widenius'
AND first_name >='M' AND first_name < 'N';
然而,name索引不用于下面的查詢:
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test
WHERE last_name='Widenius' OR first_name='Michael';
MySQL使用索引提高查詢性能的方式將在7.4.5節,“MySQL如何使用索引”中討論。