MySQL 可以将多列索引用于测试索引中所有列的查询,或仅测试第一列、前 2 列、前 3 列等的查询。如果在索引定义中以正确的顺序指定列,单个复合索引可以加快对同一个表的多种查询。
SELECT * FROM test WHERE first_name='Andrew';
SELECT * FROM test
WHERE last_name='Smith' OR first_name='Andrew';
Run Code Online (Sandbox Code Playgroud)
假设您发出以下SELECT
语句:
mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
Run Code Online (Sandbox Code Playgroud)
如果 col1 和 col2 上存在多列索引,则可以直接获取相应的行。如果 col1 和 col2 上存在单独的单列索引,则优化器会尝试使用索引合并优化。
来源:http : //dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html