MySQL的 - 多列索引的顺序(Mysql - sequence of multiple colu

2019-10-23 23:27发布

说,如果我有一个查询,如下所示:

SELECT * FROM table WHERE category='5' and status='1' LIMIT 5

该表有一个百万行。

为了加快速度,我创建索引(状态,类别),即多列索引。

有600级的类别,但只有2状态(1或0)。 我不知道是否有任何性能上的区别,如果我创建索引(类别,状态),而不是指数(地位,类别)。

Answer 1:

状态第一。 诀窍是那么如果你只需要通过类别,你可以进行查询。

SELECT * from table where status in (1,0) and category = 'whatever'

,仍然可以得到指数支持。 当然,如果你的查询都是使用两列 ,如果你只使用状态这是好多了,唯一一类仅略差如果在所有它是相同的两种方式,但在这种情况下。

如果你正在寻找一个大量插入,以及,你希望尽量减少指标的数量,所以这是你最好的选择,而不是有多个索引。



Answer 2:

不应有任何区别。 该指数的选择性是相同的,你是否为了它(类别,状态)或(状态,类别)。

顺便说一句,使用极限,往往是还没有使用ORDER BY意义。 除非你指定的顺序由SQL查询返回的行的顺序是任意的。


回复您的评论:是的,这是共同的需要五个胡乱行,但任意是不一样随意。 这是不常见的需要任意5行。



文章来源: Mysql - sequence of multiple column indexes