首页 > 解决方案 > Oracle 基于函数的索引与基于虚拟列的索引性能

问题描述

我有一个有 25 亿行的生产表。它有一个列“created_date”,其中包含日期和时间组件。该表未分区。我必须根据“created_date”值导出 2 个月的数据。我的选择是(1)在列上创建基于函数的索引“TRUNC(created_date)”;或者,(2)创建一个虚拟列作为“TRUNC(created_date)”,然后索引该虚拟列。然后我使用该索引在该表上运行基于查询的 expdp。

由于我无法测试哪种方法更好(甚至会稍微好一点,因为它是一个没有停机时间的生产表),有没有人对这个问题有任何建议?我的假设是拥有一个虚拟列不会在每次向该表中插入一行时都会导致索引计算操作(每天大约 700 万新行),这对于基于函数的索引肯定会发生。有什么建议吗?另外,有没有人知道创建这样一个索引(在 25 亿行上)可能需要多长时间?

标签: sqloracleindexingquery-optimizationvirtual-column

解决方案


推荐阅读