0

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

SELECT * FROM TABLE ORDER BY ID DESC

如果我只是

 SELECT * FROM TABLE

它返回快速结果。

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

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

谢谢

4

1 回答 1

0

缓冲池很重要和排序堆参数(沿着sheapthres和sheapthres_shr)同时检查是否有排序溢出,因为这意味着排序会因为内存不足而被写入磁盘,并且系统临时表空间是必要的。检查它们存储在哪里,以及磁盘是否足够快。

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

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

对于第二个,索引不做任何事情,因为您将从表中检索所有数据,因此它不访问索引('where'中没有任何内容,没有任何内容被过滤)

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

于 2013-02-08T13:40:30.830 回答