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 一起的指定范围内查询时能起到作用。因此这个索引在以下几个查询中都会被用到:
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如何使用索引来改善查询性能的方式在下个篇文章中具体讨论。

