我需要在Oracle数据库中填充大量数据(很多小时加载)的表,并且我想知道哪个更快,在加载之前或加载之后在表上创建索引。我最初认为在索引表上插入会受到惩罚,但如果我使用完整表创建索引,则需要很长时间。哪个最好?在数据加载之前或之后创建Oracle SQL索引是否更好?
4
A
回答
12
加载数据后创建索引要快得多。如果您将数据加载到包含索引的表中,则由于索引更新不变,加载速度将非常慢。如果您稍后创建索引,则只能有效地填充一次(这可能需要一些时间,但总计应该更小)。
类似的逻辑适用于约束。也可以稍后启用这些功能(除非您希望数据在约束条件下失败并且想尽早知道)。
+0
虽然这可能是Oracle SQL的情况,但您应该再次针对每个服务器提出此问题。例如,Sybase IQ首先创建索引的速度更快! – skimania 2011-05-03 23:11:30
2
您可能想要首先创建索引的唯一原因是强制执行唯一约束。否则,使用裸表的加载速度要快得多 - 无索引,无约束,未启用触发器。
1
在数据加载之后创建索引是批量加载的推荐做法。您必须确定传入的数据质量,特别是如果您使用唯一索引。索引的缺失意味着由于存在唯一索引而发生的数据验证不会发生。 您需要考虑的另一个问题是您是否有一次性负载操作或是否会成为常规事务?如果是常规事务,则可以在每次数据加载之前删除索引,并在成功加载后重新创建这些索引。
相关问题
- 1. 在用数据填充表格之前或数据到位之后创建索引是否更好?
- 2. 在创建活动之前或之后加载数据?
- 3. 在添加列之前创建索引与添加列之后创建索引 - 是否重要?
- 4. 在Android应用程序启动之前或之后创建UI是否更好?
- 5. TSql,在数据输入之前或之后建立索引
- 6. 搜索引擎在JS加载之前或之后读取HTML吗?
- 7. 在空表上创建索引后插入数据或在Oracle上插入数据后创建唯一索引?
- 8. 在添加子元素之前或之后创建文档树
- 9. Oracle - 您是否需要在创建索引或添加列之后计算统计信息?
- 10. 在SQL中:根据之前或之后的日期添加列?
- 11. 在Oracle中创建它之前检查表是否存在
- 12. 在插入数据库之前或之后格式化数据?
- 13. VueJS:在加载组件之前和之后获取数据
- 14. 如何前或触发之后创建一个能赶上DUP_VAL_ON_INDEX在Oracle PL/SQL
- 15. SQL在给定索引之前的最后更改值
- 16. Yii在创建之前检查数据库列是否存在
- 17. 应该在函数之前还是之内加载数据集?
- 18. 在TPL数据流中,是否可以在块创建之后但使用之前更改DataflowBlockOptions?
- 19. 创建ViewModel:在模型数据可用之前或之后执行此操作?
- 20. 在执行setup方法之前,“where”是否加载数据?
- 21. 急SQL:选择数据之前或日期时间之后
- 22. 过滤之前加入或之后加入SQL
- 23. 在修改内存之前或之后是否引发了段错误?
- 24. 在运行删除/加载数据脚本之前锁定oracle数据库
- 25. 在加载数据之前加载ViewController是IOS
- 26. 使用之前是否有缺点:之前&:在CSS之后?
- 27. 是否在创建自由静态内存之前卸载DLL?
- 28. 在下载之前压缩数据会更好吗?
- 29. 在mysql提取之前或之后添加值?
- 30. 上传之前或之后获取图像的创建日期
你是否也考虑过INSERT/* + APPEND * /提示和可能的NOLOGGING? – PenFold 2010-01-29 16:41:31