2个同样的查询,一个按照ID排序,一个按照时间排序,时间排序直接奔溃

2个索引一个是fenlei,复合索引分类fenleiid字段和status字段,status字段内容几乎都是1。
另一个索引time,单独time时间戳字段。

语句1:
SELECT *
FROM topic
WHERE fenleiid IN (98)
AND status = 1
ORDER BY id DESC
LIMIT 0, 10

语句2:
SELECT *
FROM topic
WHERE fenleiid IN (98)
AND status = 1
ORDER BY time DESC
LIMIT 0, 10

图片说明

图片说明

为什么按照时间排序,会造成mysql cpu100%。而按照id就非常快。

如果需要用time做排序,我应该怎么建索引。

1、主键是有索引的
2、主键带的是主键索引,你试一下order by primary key和不带,会发现时间是一样的,因为数据在磁盘里存放的顺序和主键索引存放的顺序一致

看下这个

时间没有建立索引,执行就会很慢。

ID是关键字段,就快啊,时间不是关键字,就慢