有效使用索引
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字句使用频率较高的列排在最前面,或者根据需要为其他列创建单独的索引。

案例

sql唯一索引多个字段 唯一索引多个null_oracle