C/C++教程

Oracle 索引的优化-转载

本文主要是介绍Oracle 索引的优化-转载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在以写为主的应用中,索引的维护需要消耗一定的 CPU 和 I/O 资源,不要创建没有必要的索引,防止冗余索引的出现。


如何选择合适的字段来创建索引?

1、选择那些经常出现在 WHERE 条件中的字段

2、选择那些经常用于表连接的字段

3、选择具有高选择性的字段。当一个字段中重复数据越少时,字段的选择性就越高。

4、不要在仅有几个值(或少量值)、有大量重复数据的字段上创建 B 树索引。在这种情况下,如果数据库不是有大量的写操作或在OLTP环境下,可以考虑使用位图索引。

5、不要在经常更新的字段上创建索引。在对索引字段进行 DML 操作的时候,索引同样进行对应更新。对索引的操作也会产生额外的 undo 和 redo。

6、考虑外键上创建索引,这样的索引允许更新和删除父表时,子表不会被锁。

7、当选择创建一个索引时,考虑查询性能的提升和DML操作的延时之间,哪个成本更大,是否值得创建索引。


联合索引

相比单字段的索引,联合索引可以具有额外优点

1、提升了索引的选择性,选择性差的字段两个或多个组合到一起,可以提高联合索引的选择性。

2、减少了 I/O,如果查询中的字段均在联合索引中,则数据库直接从索引中提取数据,不需要到表中去取数据。


如何选择联合索引的字段?


选择出现在 WHERE 条件中用 AND 条件联合在一起的字段,特别是当两个或多个 AND 结合在一起的字段的选择性大于单个字段时。


如果选择联合索引中字段的顺序?


1、选择在 WHERE 条件中处于领先部分的字段,
例如,CREATE INDEX comp_ind ON table1(x, y, z);
x, xy, 和 xyz 是这个索引中的领先部分。
yz, y, 和 z 则不是。


2、把在 WHERE 条件中出现频率更高的字段放在前面


3、如果 WHERE 条件中的各字段出现频率相当,则把按照物理排序的字段放在前面。
这篇关于Oracle 索引的优化-转载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!