mysql 索引相关

本文探讨了mysql查询优化中的关键点,如索引查询成本、in子句的上限、null值在统计中的处理、isnull/isnotnull区别,以及联合索引的最左前原则。重点讲解了如何应对in查询超过200个值时的全表扫描策略,以及groupby操作中的高效查询技巧。
摘要由CSDN通过智能技术生成

当使用索引查询是成本超过80%时,会使用全表扫描。

in 查询:

        in的条件不能超过200个的原因:当in中的条件少于200时,mysql会使用范围查询,根据最小值和最大值进行查询。当超过200个,mysql会使用SHOW INDEX FROM 表名 的语法,进行估算

根据索引查询出不重复的值种类,然后与in中的条件进行相乘。结果不是很准。

查询优化器,还是先计算全表扫描的成本。

对于null值:

        1.null值代表一个未知的值,独一无二的

        2.所有的null都表示一个值,一样的,认为是最小的(mysql中默认的)

        3.认为null是没有意思,统计的时候忽略null值。

        is null 可以使用索引,is not null 是不能使用索引的

mysql中的联合索引排序,利用最左前原则

        a b c联合索引:where a b c是可以用到索引的

        where a order by b c也可以用到索引

group by:

        先进行排序然后分组

        where a group by b c效率最快,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值