我有一个非常简单的查询,它返回200K条记录的速度非常慢(20秒)。
SELECT * FROM TABLE ORDER BY ID DESC
如果我只做
SELECT * FROM TABLE
它会快速返回结果。
我在那个字段ID上创建了INDEX(允许反向扫描),但仍然返回非常相似的响应。问题出在哪里?这个查询停滞的原因是什么?我更新了静态和索引表元数据。
我希望数据库专家(管理员)的帮助,我知道这不是一个简单的问题。
感谢
缓冲池和排序堆参数(连同sheapthres和sheapthres_hr)很重要。同时,检查是否存在排序溢出,因为这意味着由于内存不足,排序将被写入磁盘,因此需要一个系统临时表空间。检查它们存储在哪里,以及磁盘是否足够快。
查看访问计划,并检查索引是否考虑在内。
第一个查询非常快,因为它不需要任何排序,只需要一个表扫描。
对于第二个,索引什么都不做,因为你将从表中检索所有数据,所以它不会访问索引("where"中没有任何内容,没有任何内容被过滤)
这两个查询都需要表扫描,但第一个查询需要排序,这就是问题所在,即排序。