在非常简单的查询中,ORDER BY FIELD上的db INDEX没有帮助——仍然会减慢响应



我有一个非常简单的查询,它返回200K条记录的速度非常慢(20秒)。

SELECT * FROM TABLE ORDER BY ID DESC

如果我只做

 SELECT * FROM TABLE

它会快速返回结果。

我在那个字段ID上创建了INDEX(允许反向扫描),但仍然返回非常相似的响应。问题出在哪里?这个查询停滞的原因是什么?我更新了静态和索引表元数据。

我希望数据库专家(管理员)的帮助,我知道这不是一个简单的问题。

感谢

缓冲池和排序堆参数(连同sheapthres和sheapthres_hr)很重要。同时,检查是否存在排序溢出,因为这意味着由于内存不足,排序将被写入磁盘,因此需要一个系统临时表空间。检查它们存储在哪里,以及磁盘是否足够快。

查看访问计划,并检查索引是否考虑在内。

第一个查询非常快,因为它不需要任何排序,只需要一个表扫描。

对于第二个,索引什么都不做,因为你将从表中检索所有数据,所以它不会访问索引("where"中没有任何内容,没有任何内容被过滤)

这两个查询都需要表扫描,但第一个查询需要排序,这就是问题所在,即排序。

相关内容