学习笔记

Study notes

mysql索引使用

云逐梦3832019-08-23 16:49:00返回列表

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

InnoDB和MyISAM存储引擎支持BTREE索引,MEMORY存储引擎支持HASH索引和BTREE索引,默认为前者。


索引有其明显的优势,也有其不可避免的缺点。


索引的优点


 (1)可以提高检索数据的速度,这是创建索引的最主要的原因;


 (2)对于有依赖关系的子表和父表之间的联合查询时,可以提高查询速度;


 (3)使用分组和排序子句进行数据查询时,同样可以显著节省查询中分组和排序的时间。


索引的缺点


(1)创建和维护索引需要耗费时间,耗费时间的数量随着数据量的增加而增加;


(2)索引需要占用物理空间,每一个索引要占一定的物理空间;


(3)增加、删除和修改数据时,要动态的维护索引,造成数据的维护速度降低了 。


因此,选择使用索引时,需要综合考虑索引的优点和缺点。


技巧:索引可以提高查询的速度,但是会影响插入记录的速度。因为,向有索引的表中插入记录时,数据库系统会按照索引进行排序。这样就降低了插入记录的速度,插入大量记录时的速度影响更加明显。这种情况下,最好的办法是先删除表中的索引,然后插入数据。插入完成后,再创建索引。

 

总结:

①最佳左前缀法则。

#1.在等值查询时,更改索引列顺序,并不会影响explain的执行结果,因为mysql底层会进行优化

#2.在使用order by时,注意索引顺序、常量,以及可能会导致Using filesort的情况。

②group by容易产生Using temporary

③通俗理解口诀:

   全值匹配我最爱,最左前缀要遵守;

   带头大哥不能死,中间兄弟不能断;

   索引列上少计算范围之后全失效;

   LIKE百分写最右,覆盖索引不写星;

   不等空值还有or,索引失效要少用。



返回
顶部