2 索引
使用树形结构提高查询速度的操作
叶子节点上:数据大小小,且区分度高
聚集索引:即主键索引:叶子节点存在id,关联着对应数据(主键)where ... 只能在主键的时候明显提高检索速度
只能给一个字段加主键,如果在where中不使用该字段,则索引无效
添加主键的方式即为添加主键索引的方式
辅助索引:在建立树形结构的时候,叶子节点中存的是列数据+id。获取列之后,在根据对应的id去找(使用聚集索引的模式)
这样的话,数据在叶子占用空间少,
唯一索引:unique
创建:是直接在字段后加unique 或者后续添加 alter table 表名 add unique key 自己指定的索引名字(字段);
删除: alter table 表名drop index 自己指定的索引名字 或者 drop index 自己指定的索引名字 on 表名;
普通索引:index
创建时单独一个逗号隔开,index 自己指定的索引名字(字段) 或者后续添加 alter table 表名 add index 自己指定的索引名字(字段);
删除同上
2.1 命中索引
指的是如何合理的提高已经增加的索引的实际利用率
范围查询:>,>=,like 这种方式效率低,尽可能的要精确范围
在使用and查找时,一旦某个条件中有索引对应的字段,则先执行有索引的条件,是一种mysql的自动优化机制。自动选择定位范围内快的条件查询,针对的是多条件语句的and结果
索引的计算:自断不要计算,后面的数据可以计算。where id*10=100,是错的;where id=10*10,是对的。
=和in语句是可以乱序的,也是一种自动优化
优化神器:explain,在要进行查找的原句前加一个explain即可预执行,可以显示扫描的行数等信息
2.2 联合索引
给多个字段合并加一个索引,一切的写法都不变:字段的写法是在括号内写多个,彼此用逗号隔开
最左匹配特性:where要求最左边的字段必须有,数据区分度高的和数据长度小的字段房子括号里的前面,
没有最左的字段则导致这个联合索引失效
2.3 覆盖索引
只有一个字段的内容被取出来的索引语句结果
2.4 慢查询日志
设置时间,查看、记录查询速度慢的语句
原文地址:https://www.cnblogs.com/shachengcc1/p/11444212.html