mysql索引【第四篇】

优化器选择索引的逻辑:

找到一个最优的执行方案,用最小的代价去执行语句。在数据库里,扫描行数是影响执行代价的因素之一,扫描行数越少,意味着访问磁盘的次数越少,消耗CPU资源越少。当然,是否生成临时表、是否排序等因素也会影响优化器选择索引。

 

索引选择异常和处理:

1.使用 force index 强行选择一个索引

如果索引改了名字,相因的语句需要修改。不同类型数据库迁移还可能会有语法不兼容

2.修改sql语句,引导mysql使用我们期望的索引  【但是要语句逻辑一致】

3.重建一个更合适的索引,或删掉误用的索引

 

前缀索引:

alter table A add index   idx_mail(email(4))    ##比如 email的值为:xiaoming@qqq.com

执行顺序:

1.从索引树上找到满足索引值 xiao 的记录

2.到主键查处整行数据,判断取出的值与查询条件是否匹配            ##这里有一个回表的过程

3.查询下一条数据,继续判断,直到索引值不满足xiao的记录,跳出循环

优点:定义好长度,可以节省空间,减少额外增加的查询成本

缺点:在多个索引的查询条件中,覆盖索引会失效

 

mysql索引【第四篇】

上一篇:sql常用语句整理


下一篇:windows下安装ruby on rails的最快方法