2010-11-09 89 views
2

我注意到,在PHPMyAdmin中,我可以单独索引列,或者我可以使用复选框来选择字段,然后单击索引,并以不同的方式编制索引。这是否意味着,如果对于给定的表,我有该表的2列,将每行定义为唯一的(而不是简单的单列ID`)我应该索引这些一起来提高性能?MySQL多重索引类型?

回答

4

多列索引可以被认为是一个包含通过连接索引列的值创建的值的已排序数组。

MySQL以这样一种方式使用多列索引,即当您在WHERE子句中为索引的第一列指定已知数量时,查询速度很快,即使未指定其他列的值。

如果您有一个名为last_namefirst_name两列,并创建一个索引INDEX name (last_name,first_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),索引将不会被使用,查询会变慢。

+0

对不起,我不太了解。 '当你为第一列指定一个已知数量时' - 这是什么意思是“已知数量”? – Webnet 2010-11-09 16:32:05

+0

我在这里找到了最好的解释:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html,但是你的链接让我在那里,谢谢! – Webnet 2010-11-09 16:42:51

+0

有点困惑,但帮助我!感谢+1 – 2011-02-16 23:45:37