在mysql中使用索引的原则有如下几点:mysql
一、 对于查询频率高的字段建立索引;sql
二、 对排序、分组、联合查询频率高的字段建立索引;数据库
三、 索引的数目不宜太多.net
缘由:a、每建立一个索引都会占用相应的物理控件;blog
b、过多的索引会致使insert、update、delete语句的执行效率下降;排序
四、若在实际中,须要将多个列设置索引时,能够采用多列索引索引
如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中须要对StudentNo,StudentName字段进行查询,对Sex字段进行分组,对BirthDate字段进行排序,此时能够建立多列索引get
index index_name (StudentNo, StudentName, Sex, BirthDate); #index_name为索引名class
在上面的语句中只建立了一个索引,可是对4个字段都赋予了索引的功能。效率
建立多列索引,须要遵循BTree类型,
即第一列使用时,才启用索引。
在上面的建立语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用。
如: select * from Student where StudentNo = 1000; #使用到了StudentNo字段,索引被启用。
可使用explain检测索引是否被启用
如:explain select * from Student where StudentNo = 1000;
五、选择惟一性索引
惟一性索引的值是惟一的,能够更快速的经过该索引来肯定某条记录。例如,学生表中学号是具备惟一性的字段。为该字段创建惟一性索引能够很快的肯定某个学生的信息。若是使用姓名的话,可能存在同名现象,从而下降查询速度。
六、尽可能使用数据量少的索引
若是索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索须要的时间确定要比对CHAR(10)类型的字段须要的时间要多。
七、尽可能使用前缀来索引
若是索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。若是只检索字段的前面的若干个字符,这样能够提升检索速度。
八、删除再也不使用或者不多使用的索引.
表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能再也不须要。数据库管理员应当按期找出这些索引,将它们删除,从而减小索引对更新操做的影响
PS:部份内容借鉴与https://blog.csdn.net/csdnones/article/details/50412603