1、is null可以使用索引(网上很多文章存在误导,这个确实可以使用索引),is not null无法使用索引。

2、为什么重复数据较多的列不适合使用索引?

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  假如索引列TYPE有5个键值,如果有1万条数据,那么 WHERE TYPE = 1将访问表中的2000个数据块。

  再加上访问索引块,一共要访问大于2000个的数据块。

  如果全表扫描,假设10条数据一个数据块,那么只需访问1000个数据块,既然全表扫描访问的数据块少一些,肯定就不会利用索引了。

 3、MySQL主要提供2种方式的索引:B-Tree索引,Hash索引

  B树索引具有范围查找和前缀查找的能力,对于有N节点的B树,检索一条记录的复杂度为O(LogN)。相当于二分查找。

  哈希索引只能做等于查找,但是无论多大的Hash表,查找复杂度都是O(1)。

  显然,如果值的差异性大,并且以等值查找(=、 <、>、in)为主,Hash索引是更高效的选择,它有O(1)的查找复杂度。

  如果值的差异性相对较差,并且以范围查找为主,B树是更好的选择,它支持范围查找。

  BTree详细介绍:https://www.cnblogs.com/coder2012/p/5309197.html

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄