MySql在索引优化

1.复合索引
好比有一条语句是这样的:select * from users where area=’beijing’ and age=22;
若是咱们是在area和age上分别建立单个索引的话,因为mysql查询每次只能使用一个索引,因此虽然这样已经相对不作索引时全表扫描提升了不少效
率,可是若是在area、age两列上建立复合索引的话将带来更高的效率。若是咱们建立了(area, age,
salary)的复合索引,那么其实至关于建立了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀
特性。所以咱们在建立复合索引时应该将最经常使用做限制条件的列放在最左边,依次递减。

2.排序的索引问题
mysql查询只使用一个索引,所以若是where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。所以数据库默认排序能够符合要求的状况下不要使用排序操做;尽可能不要包含多个列的排序,若是须要最好给这些列建立复合索引。
select * from zl_yhjbqk order by qc_bh(创建qc_bh索引)
select * from zl_yhjbqk where qc_bh=’7001’ order by cb_sx(创建qc_bh+cb_sx索引,注:只是一个索引,其中包括qc_bh和cb_sx字段)

3.使用短索引
对串列进行索引,若是可能应该指定一个前缀长度。例如,若是有一个CHAR(255)的 列,若是在前10 个或20 个字符内,多数值是唯一的,那么就不要对整个列进行索引。短索引不只能够提升查询速度并且能够节省磁盘空间和I/O操做。mysql

相关文章
相关标签/搜索