两个综合指数还是一个?

时间:2015-03-09 23:51:17

标签: mysql sql

我有两个查询如下:

SELECT * FROM table WHERE asset_type=%s AND country=%s AND series=%s
SELECT * FROM table WHERE asset_type=%s AND country=%s AND episode=%s

我应该添加一个复合索引,包括所有四个字段吗?或两个复合索引,每个查询一个?

ALTER TABLE table ADD INDEX (asset_type, country, series)
ALTER TABLE table ADD INDEX (asset_type, country, episode)
-- or --
ALTER TABLE table ADD INDEX (asset_type, country, series, episode)

为什么我要选择一个而不是另一个?

1 个答案:

答案 0 :(得分:2)

如果要最大限度地优化两个查询,请使用两个索引。

如果asset_typecountry字段具有高度选择性 - 意味着它们在原始表中选择的行数非常少 - 那么一个索引就可以工作。请注意,对于第二个查询,前两个键将用于在索引中查找开始扫描的位置。