我有一个非常简单的查询,它返回200K记录很慢(20秒)。
SELECT * FROM TABLE ORDER BY ID DESC
如果我这样做
SELECT * FROM TABLE
它会返回快速结果。
我在该字段ID(ALLOW REVERSE SCANS)上创建了INDEX,但仍然返回非常相似的响应。 哪里可以问题?这个查询可能导致停滞的原因是什么? 我更新了statictics和索引表元数据。
我希望得到数据库专家(管理员)的帮助,我知道这不是一个简单的问题。
谢谢
答案 0 :(得分:0)
缓冲池很重要,排序堆参数(沿着sheapthres和sheapthres_shr)同时检查是否存在排序溢出,因为这意味着由于内存不足而将排序写入磁盘,为此系统临时表空间是必需的。检查它们存储的位置,以及磁盘是否足够快。
查看访问计划,并检查索引是否已考虑在内。
第一个查询速度非常快,因为它不需要任何排序,只需要进行表扫描。
对于第二个,索引不执行任何操作,因为您将从表中检索所有数据,因此它不会访问索引('where'中没有任何内容,没有任何内容被过滤)
两个查询都需要表扫描,但第一个需要排序,这就是问题,排序。