2012-02-09 87 views
2

我想通过使用索引来加速我的MySQL表。当我使用PHPmyadmin添加索引时,有2列,键名和列。我有一些我想索引的表格列。MySQL索引:1个键名多列或每列1个键名?

问题:每列有1个键名和我想索引的所有列有1个键名有什么区别?我注意到对所有索引列使用1个键名是最好的。发生什么事?

具有多个列的键名中的第一列是出现在我的MySQL查询中的第一列。我认为这与使用1个关键字多列有关,但我不确定为什么这是必需的?

回答

1

Multi-column indexes(“所有列的1个键名”)与每列的single-column indexes不同。这一切都取决于你的查询。

如果您要频繁查询多列,则需要为该组合编制索引。例如,如果您查询:

SELECT * FROM users WHERE (age > 18 AND name = "Johnnie Walker") 

你需要添加两列索引:(年龄,姓名)

+0

我是正确地说,每个键名创建一个不同的索引,每个数据库查询只使用有很多索引中的1个,索引和索引号一样多? – Nyxynyx 2012-02-10 00:09:35

+0

@Nyxynyx:对你的第一个假设是肯定的。没有你的第二个假设。查询引擎可以自由使用尽可能多的索引来优化查询。是的,你的第三个假设。 – Asaph 2012-02-10 00:12:17

+0

@Asaph:谢谢!任何想法为什么在PHPmyadmin中被称为'keyname'的索引? – Nyxynyx 2012-02-10 00:15:16