表中的主关键字自动建立唯一索引;
表中字段的唯一约束,Oracle利用索引来保证数据的完整性;
直接条件查询的字段,在sql中直接用于条件约束的字段;
查询中排序的字段,排序字段通过索引会提高效率;
查询中与其他表建立关联的字段,外键关联字段;
查询中统计或分组统计的字段。
以下情况需注意不适合建索引:
表记录太少不适合建索引,首先要访问索引表然后通过索引访问数据表,一般索引表和数据表在不同的数据块中;
经常插入、删除、修改的表在查询允许的情况下尽量少建索引;
数据重复且分布平均的字段。
建索引还需注意:
1) 考虑表空间和磁盘空间是否充足,索引也是一种数据;
2) 在对表加索引的时候会对表加锁,因此要在业务空闲的时候;
3) 添加时避免过度索引,即数据重复且分布平均的字段可以不加;
4) mysql每次查询只能使用一个索引,如果将单个索引条件聚合,以最佳左前缀方式创建复合索引性能更加;
5) 索引字段不能有NULL,如果有NULL值将不会包含在索引中;
6) 使用短索引,一个大的char可以指定前几位索引;
7) 排序索引时,如果where条件包含了索引排序order的时候不在使用了,如果order多个字段可以建立复合索引;
8) like语句操作索引,一般不赞成,”%aaa%”不会使用索引,”aaa%”可以使用;
9) 不使用NOT IN和操作,他不会使用索引并且是全表扫描操作,可以用 NOT EXISTS代替。