【发布时间】:2017-04-23 14:24:28
【问题描述】:
假设 oracle db 有 40M 字节的缓存内存。我是数据库的唯一用户,我想了解如何执行查询以计算查询的缓存命中率。
假设我们有这个查询:
SELECT column1, count(*)
FROM table1
GROUP BY column1
ORDER BY column1 desc
假设table1小于40M大小,现在解释计划说:
TABLE ACESS(FULL) 的成本为 1330(I/O ?),SORT(GROUP BY) 的成本为 1340,SELECT STATEMENT 的成本也为 1340。
我有些看不懂,为什么 SORT 和 SELECT STATEMENT 各要花费 1340 I/O?
由于我们有一个大于表大小的缓存,当我们进行表访问时,我们将磁盘内容加载到缓存中,然后当我们想要排序和选择时,我们只需要检索缓存中的内容,所以在我的请注意,排序和选择的 I/O 应该为零。
另外,我如何计算该查询的缓存命中率?
【问题讨论】:
-
可以发一下执行计划吗?
标签: sql database oracle sql-execution-plan