我仍然围绕MySQL INDEXES ......快速提问......
我有一张存储会员位置的表格。它有member_id
和location_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` );
它有什么不同吗?
答案 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