我应该使用哪个索引来混合WHERE和ORDER BY

时间:2018-08-29 14:44:35

标签: php mysql sql

我有以下查询

SELECT * FROM mytable WHERE toshow = 1 ORDER BY timestamp DESC

插入行时,时间戳列会将当前时间戳存储在数据库中。在某些行中,“ toshow”的值为0,在某些行中,其为1

对于任何0或1显示值和上面的最新行,我应该使用INDEX来更快地获得结果

我为此创建了索引(timestamp, toshow),但混淆了它的权利。

2 个答案:

答案 0 :(得分:0)

覆盖指数:

CREATE INDEX idx ON mytable(toshow, timestamp DESC);

答案 1 :(得分:0)

您应该首先使用where部分作为最有选择性的部分,以便where子句很容易使用

 index (toshow, timestamp DESC ) 

timestamp列用于提供订单信息,但这是在根据where子句对行进行过滤之后发生的

这样索引 它既用于过滤行,又用于获取排序的格式 用您的方式,索引不能用于..