2

我的 oracle 数据库中有一个包含 100 列的表。此表中的 50 列未被访问此表的程序使用。(即选择查询只选择相关列而不使用'*')

我的问题是这样的: 如果我只用我需要的列重新创建同一个表,它是否会使用与原始表相同的查询来提高查询性能(请记住,只选择了相关的列)

值得一提的是,该程序使这些查询每秒进行合理的次数!

PS: 这是我正在进行的现有项目,很久以前为其他产品设计了表格(这就是为什么我们现在有未使用的列)

4

1 回答 1

3

所以这样做的效果是平均行会更小,如果额外的列有数据将不再在表中。因此,表可以更小,不仅会使用更少的磁盘空间,还会使用更少的 SGA 内存空间,并且缓存会更有效。

因此,如果您通过全表扫描访问表,那么读取段会更快,但如果您使用基于索引的访问机制,那么唯一的性能改进可能是通过提高从缓存中获取块的机会.

[已编辑]

这个SO 线程建议“它总是拉一个元组...... ”。因此,如前所述,您可能会看到一些性能改进,不确定主要还是次要。

于 2012-05-22T09:31:30.183 回答