我注意到在PHPMyAdmin中我可以单独索引列,或者我可以使用复选框选择字段然后单击索引,它们以不同的方式编入索引。这是否意味着如果对于给定的表我有2列该表将每行定义为唯一(而不仅仅是一个简单的单列id`)我应该将它们编入索引以提高性能?
答案 0 :(得分:4)
多列索引可以被视为一个排序数组,其中包含通过连接索引列的值而创建的值。
MySQL使用多列索引,以便在WHERE子句中为索引的第一列指定已知数量时查询很快,即使您没有为其他列指定值。
如果您有两列名为last_name
和first_name
并且您创建了索引INDEX name (last_name,first_name)
,则该索引可用于指定last_name的已知范围内的值的查询,或者last_name和first_name。
来源:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html
因此,在您的特定情况下,它可能没有帮助。如果您想查询后面的列(例如:SELECT * FROM test WHERE first_name='Michael'
或SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael
),则不会使用索引,查询会更慢。