sql - Oracle 基于函数的索引与基于虚拟列的索引性能
问题描述
我有一个有 25 亿行的生产表。它有一个列“created_date”,其中包含日期和时间组件。该表未分区。我必须根据“created_date”值导出 2 个月的数据。我的选择是(1)在列上创建基于函数的索引“TRUNC(created_date)”;或者,(2)创建一个虚拟列作为“TRUNC(created_date)”,然后索引该虚拟列。然后我使用该索引在该表上运行基于查询的 expdp。
由于我无法测试哪种方法更好(甚至会稍微好一点,因为它是一个没有停机时间的生产表),有没有人对这个问题有任何建议?我的假设是拥有一个虚拟列不会在每次向该表中插入一行时都会导致索引计算操作(每天大约 700 万新行),这对于基于函数的索引肯定会发生。有什么建议吗?另外,有没有人知道创建这样一个索引(在 25 亿行上)可能需要多长时间?
解决方案
推荐阅读
- c++ - 在这个特定问题中,c++ 如何处理溢出?
- oracle - 我可以在没有 Oracle JDBC 驱动程序的情况下连接到 Oracle 数据库吗?
- c - 在使用堆栈方面,为什么我们需要一个基指针和一个堆栈指针
- python - 创建一个语音识别循环
- scala - 如何正确聚合 Seq 中的对象?
- user-interface - 您通常如何对语言选择进行编程
- android - 我可以在 Google Play 控制台上发布 Mit 许可的 android 应用程序(从 github 下载)吗?
- python - 重复函数“x”次的递归
- excel - 在 VBA 中查找数组中的匹配值
- r - 使用 GGPLOT2 的密度图问题