有效使用索引+索引列上所使用的操作符+避免对唯一索引列使用null+选择复合索引主列
2017-06-04 14:02
441 查看
有效使用索引
1.一般使用索引查询数据比全表扫描效率要高
2.oracle查找执行查询和update语句的最佳路径时,oracle优化器将使用索引
3.使用索引需要消耗额外的存储空间
4.索引需要定期维护,因为当记录增加或者索引列被修改的时候,索引本身也会被修改,这意味着针对每个记录的insert,update,delete操作,需要更多的磁盘I/O,因为索引需要一部分磁盘I/O。所以不必要的索引会影响查询效率。
索引列上所使用的操作符
1对索引列上的操作语句避免使用非操作符,因为非操作符会造成oracle对表进行全表扫描,或者说让索引列失效。
2非操作符:not,!=,<>, !<, !>, not exists, not in, not like等。
注意:
like:
使用 like ‘%1233%’,索引会失效,执行全表扫描
使用 like ‘1233%’,会用范围索引.
避免对唯一索引列使用null
1唯一索引列:该列不能有重复值,但是多个null是可以同时存在,因为oracler认为2个null是不相等的。
2唯一索引列不使用null的原因:
假如唯一索引列有很多个null,因为该列都是空值,所以索引中并不存在这些记录。
所以当where 字句使用is null或is not null,对唯一索引列进行空值比较时,oracle将停止使用该列的唯一索引(因为没有值),导致oracle进行全表扫描。
3索引列中包含null的行都会不被包含在索引中。
4复合索引只要有一个列含有null,那么该列对于复合索引就是无效的。所以设计数据库尽量不要让字段的默认值为null
选择复合索引主列
1复合索引:多个列上创建的索引,多个列的前后顺序会影响查询
2:查询语句时,where 字句的 条件列顺序要与建索引的顺序一致。目的是为了提高效率。
创建复合索引的规则
1可以选择经常在where 字句使用,并且由and 连接的列作为复合索引的索引列
2可以选择where字句使用频率较高的列排在最前面,或者根据需要为其他列创建单独的索引。
案例
1.一般使用索引查询数据比全表扫描效率要高
2.oracle查找执行查询和update语句的最佳路径时,oracle优化器将使用索引
3.使用索引需要消耗额外的存储空间
4.索引需要定期维护,因为当记录增加或者索引列被修改的时候,索引本身也会被修改,这意味着针对每个记录的insert,update,delete操作,需要更多的磁盘I/O,因为索引需要一部分磁盘I/O。所以不必要的索引会影响查询效率。
索引列上所使用的操作符
1对索引列上的操作语句避免使用非操作符,因为非操作符会造成oracle对表进行全表扫描,或者说让索引列失效。
2非操作符:not,!=,<>, !<, !>, not exists, not in, not like等。
注意:
like:
使用 like ‘%1233%’,索引会失效,执行全表扫描
使用 like ‘1233%’,会用范围索引.
避免对唯一索引列使用null
1唯一索引列:该列不能有重复值,但是多个null是可以同时存在,因为oracler认为2个null是不相等的。
2唯一索引列不使用null的原因:
假如唯一索引列有很多个null,因为该列都是空值,所以索引中并不存在这些记录。
所以当where 字句使用is null或is not null,对唯一索引列进行空值比较时,oracle将停止使用该列的唯一索引(因为没有值),导致oracle进行全表扫描。
3索引列中包含null的行都会不被包含在索引中。
4复合索引只要有一个列含有null,那么该列对于复合索引就是无效的。所以设计数据库尽量不要让字段的默认值为null
选择复合索引主列
1复合索引:多个列上创建的索引,多个列的前后顺序会影响查询
2:查询语句时,where 字句的 条件列顺序要与建索引的顺序一致。目的是为了提高效率。
创建复合索引的规则
1可以选择经常在where 字句使用,并且由and 连接的列作为复合索引的索引列
2可以选择where字句使用频率较高的列排在最前面,或者根据需要为其他列创建单独的索引。
案例
相关文章推荐
- oracle复合索引的选择和使用
- MySQL普通索引、唯一索引、主索引、外键索引、复合索引、全文索引的使用
- 使用复合索引代替单键索引,来避免单键有null值的情况
- ORACLE复合索引使用 注意事项
- 使用索引的误区之二:使用了 和 != 操作符,导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 大数据量表中如何有效使用非聚集索引及如何避免使用LEFT JOIN
- 如何判断使用复合索引还是使用多个单列索引
- mongodb指南(翻译)(十八) - developer zone - 索引(二)_id索引、复合索引、稀疏索引、数组索引、唯一索引
- 你的索引被有效的使用了吗?(Are Your Indexes Being Used Effectively?)
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 有效地使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 有效的使用和设计COM智能指针——条款3:按照功能和实现原理选择合适的智能指针
- 有效的使用和设计COM智能指针——条款25:思考兼容取地址操作符带来的若干问题
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 ALTER AUTHORIZATION 语句将数据库所
- 使用索引的误区之二:使用了 和 != 操作符,导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
- 使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引——oracle
- 复合索引不同建法的选择