MySQL INDEXES - 向一个索引添加多个列

时间:2010-08-28 05:11:23

标签: mysql

我仍然围绕MySQL INDEXES ......快速提问......

我有一张存储会员位置的表格。它有member_idlocation_id列...我执行MySQL查询以查找特定成员的所有位置...

设置这样的INDEX会更好:

ALTER TABLE `members_locations` ADD INDEX `member_location` ( `member_id` , `location_id` )

或者我应该像这样分开它们>

ALTER TABLE `members_locations` ADD INDEX `member_id` ( `member_id` );
ALTER TABLE `members_locations` ADD INDEX `location_id` ( `location_id` );

它有什么不同吗?

2 个答案:

答案 0 :(得分:1)

This article should be helpful

以下是一个例子: ALTER TABLE买家ADD INDEX idx_name_age(first_name,last_name,age);

Here's another article显示了使用多列索引和多个单列索引之间的区别。

答案 1 :(得分:0)

那么,

我想最好有一个索引,但实际上取决于你如何查询它。

如果在where子句中同时包含两个列(member_id,location_id),则它们必须明确地进入一个索引。

如果您单独查询,例如有时候是member_id,有时候只有location_id,你可能会考虑两个索引。但是,即使在这种情况下,其中一个索引也可能包含第二列,以支持两列都存在的查询。

最后,这一切都取决于您想要调整的查询。

虽然不适用于MySQL,但是对于Oracle,我的新网络书“使用索引,Luke”详细描述了这一点。 AFAIK所有数据库在这方面都非常相似。

http://use-the-index-luke.com/where-clause/the-equals-operator/concatenated-keys