IT老齐架构300讲笔记(036) 阿里开发规范解读,小心MySQL索引选择性陷阱

IT老齐架构300讲笔记(036) 阿里开发规范解读,小心MySQL索引选择性陷阱,第1张

IT老齐架构300讲笔记(036) 阿里开发规范解读,小心MySQL索引选择性陷阱

目录

一、什么是索引选择性陷阱

1.1 InnoDB的存储结构

1.2 头匹配,尾匹配与任意匹配

1.3 索引选择性太差导致全表扫描

二、索引选择性差的场景

三、索引选择性差的解决方法

3.1 通过组合索引提高选择性

3.2 引入搜索引擎

3.3 强制使用索引

3.4 增加缓存,提高全表扫描速度 

专栏链接:IT老齐架构300讲笔记专栏


一、什么是索引选择性陷阱

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存