说,如果我有一个查询,如下所示:
SELECT * FROM table WHERE category='5' and status='1' LIMIT 5
该表有一个百万行。
为了加快速度,我创建索引(状态,类别),即多列索引。
有600级的类别,但只有2状态(1或0)。 我不知道是否有任何性能上的区别,如果我创建索引(类别,状态),而不是指数(地位,类别)。
说,如果我有一个查询,如下所示:
SELECT * FROM table WHERE category='5' and status='1' LIMIT 5
该表有一个百万行。
为了加快速度,我创建索引(状态,类别),即多列索引。
有600级的类别,但只有2状态(1或0)。 我不知道是否有任何性能上的区别,如果我创建索引(类别,状态),而不是指数(地位,类别)。
状态第一。 诀窍是那么如果你只需要通过类别,你可以进行查询。
SELECT * from table where status in (1,0) and category = 'whatever'
,仍然可以得到指数支持。 当然,如果你的查询都是使用两列 ,如果你只使用状态这是好多了,唯一一类仅略差如果在所有它是相同的两种方式,但在这种情况下。
如果你正在寻找一个大量插入,以及,你希望尽量减少指标的数量,所以这是你最好的选择,而不是有多个索引。
不应有任何区别。 该指数的选择性是相同的,你是否为了它(类别,状态)或(状态,类别)。
顺便说一句,使用极限,往往是还没有使用ORDER BY意义。 除非你指定的顺序由SQL查询返回的行的顺序是任意的。
回复您的评论:是的,这是共同的需要五个胡乱行,但任意是不一样随意。 这是不常见的需要任意5行。