Oracle 数据库如何判断一个表是否小?

问题描述

当我阅读 Oracle 中的查询性能时,我多次看到术语“小表”。例如,有人说,Oracle 仅在表较小时才使用 sort-merge join。 那么,如果表很小,或者是否有任意数量的行等,数据库服务器是否使用任何公式?

解决方法

这取决于上下文。在 sort-merge join 方面,并不是说根据一些预定义的公式表很小,而是优化器做出基于成本的决策。事实证明,与其他计划相比,小桌子更有可能以更低的成本结束。 还有“小表门槛”的概念。这是表(或严格来说是段)的大小,缓冲区缓存的一部分用于读取表。这计算为缓冲区高速缓存大小的 2%。如果表符合小表阈值,您可能会看到使用小表复制而不是广播的执行计划。