MYSQL索引

存储形式分类:

回表查询:先根据二级索引拿到对应的信息,就是下面这张图中存储的黄色部分,然后根据拿到的信息去聚集索引中查询数据

如果不指定唯一或者全文索引,那么默认为常规索引

一个索引只应用到一个字段称为单列索引,应用到多列称为联合索引或组合索引

查看MySQL执行频率

慢查询日志:P76,可以将查询比较慢的sql语句记录下来,定义比较慢的sql需要自己设定秒数,生成一个日志,以此来优化sql,但默认是关闭的

profile只能看到每条sql的执行时间,而explain能看到执行顺序,类型等,只需要在select前加explain就行

额外关注type, possible_key, key, key_len

联合索引的最左前缀法则: 只要查询条件包含索引即可,不计较位置

最好使用大于等于,大于等于不会失效

索引失效情况:

不要使用一些函数

因为头部模糊匹配将会进行全表扫描,因此索引失效

sql提示:提示mysql使用哪个索引,因为一个字段可能包含多个索引,因此需要提示mysql使用哪个,use index是推荐mysql使用这个索引,而force是强制使用这个索引

黄色部分是explain中的额外信息

覆盖索引:不需要进行回表查询的索引(个人理解)

1.为username建立单列索引,有一定的优化,但查询中包含passwor,还需要进行回表查询

2.为username与password建立联合索引,这个联合索引为二级索引,因为二级索引叶子节点中包含了id的聚集索引,因此不需要为id建立联合索引,因此这个索引不需要进行回表查询

count(distinct name):对name字段进行去重统计

前缀索引:

推荐使用联合索引,如果使用两个单列索引,那么mysql会根据性能只选择其中的一个,因此使用联合索引更好

使用联合索引有顺序需要考虑,因为有最左前缀法则,并且联合索引当中的排序是通过最左边的那个顺序依次排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值