何时适合建索引?建索引要注意什么?

表中的主关键字自动创建惟一索引;mysql

表中字段的惟一约束,Oracle利用索引来保证数据的完整性;sql

直接条件查询的字段,在sql中直接用于条件约束的字段;性能

查询中排序的字段,排序字段经过索引会提升效率;排序

查询中与其余表创建关联的字段,外键关联字段;索引

查询中统计或分组统计的字段。效率

如下状况需注意不适合建索引:统计

表记录太少不适合建索引,首先要访问索引表而后经过索引访问数据表,通常索引表和数据表在不一样的数据块中;数据

常常插入、删除、修改的表在查询容许的状况下尽可能少建索引;查询

数据重复且分布平均的字段。磁盘

建索引还需注意:

1)    考虑表空间和磁盘空间是否充足,索引也是一种数据;

2)    在对表加索引的时候会对表加锁,所以要在业务空闲的时候;

3)    添加时避免过分索引,即数据重复且分布平均的字段能够不加;

4)    mysql每次查询只能使用一个索引,若是将单个索引条件聚合,以最佳左前缀方式建立复合索引性能更加;

5)    索引字段不能有NULL,若是有NULL值将不会包含在索引中;

6)    使用短索引,一个大的char能够指定前几位索引;

7)    排序索引时,若是where条件包含了索引排序order的时候不在使用了,若是order多个字段能够创建复合索引;

8)    like语句操做索引,通常不同意,”%aaa%”不会使用索引,”aaa%”可使用;

9)    不使用NOT IN和操做,他不会使用索引而且是全表扫描操做,能够用 NOT EXISTS代替。

相关文章
相关标签/搜索