目录
一、什么是索引选择性陷阱
1.1 InnoDB的存储结构
1.2 头匹配,尾匹配与任意匹配
1.3 索引选择性太差导致全表扫描
命中的索引值超过总量25%,就可能产生索引选择性陷阱,导致全表扫描
二、索引选择性差的场景
三、索引选择性差的解决方法
3.1 通过组合索引提高选择性
通过组合索引提高选择性(业务相关)
select * from 护士表 where 科室=’妇科’ and 性别=’女’
3.2 引入搜索引擎
如Es或者Solr(更换数据源)
例如:将护士表导入ElasticSearch,Es基于分片多线程检索,解决查询慢的问题
3.3 强制使用索引
强制使用索引(有时会有奇效,以实际运行效果为准)
explain select * from question force index(answer) where answer = 'A'
3.4 增加缓存,提高全表扫描速度
增加缓存,提高全表扫描速度(钞能力)
innodb_buffer_pool_size=16G
innodb_buffer_pool_instances=2