MySQL like查询后置%索引失效分析
MySQL like查询后置%索引失效分析
表结构
CREATE TABLE `t_food_shop` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`shop_name` varchar(50) NOT NULL DEFAULT '' COMMENT '店铺名称',`shop_img` varchar(250) NOT NULL DEFAULT '' COMMENT '店铺图片',`category_name` varchar(50) NOT NULL DEFAULT '' COMMENT '品类名称',`price` varchar(50) NOT NULL DEFAULT '' COMMENT '消费价格',`area` varchar(50) NOT NULL DEFAULT '' COMMENT '所属地区',`collects` bigint(11) NOT NULL DEFAULT '0' COMMENT '收藏的数量',`shop_type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '店铺的分类(0,蓝丝,1,黄丝)',`shop_grade` decimal(3,1) NOT NULL DEFAULT '0.0' COMMENT '店铺评级',`address` varchar(128) NOT NULL DEFAULT '' COMMENT '店铺地址',`longitude` varchar(16) NOT NULL DEFAULT '' COMMENT '经度',`latitude` varchar(16) NOT NULL DEFAULT '' COMMENT '纬度',`geo_hash` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'geohash',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`openrice_id` bigint(20) NOT NULL DEFAULT '0' COMMENT 'openrice 店铺唯一id',PRIMARY KEY (`id`) USING BTREE,KEY `idx_geohash` (`geo_hash`) USING BTREE,FULLTEXT KEY `idx_name` (`shop_name`) /*!50100 WITH PARSER `ngram` */
) ENGINE=InnoDB AUTO_INCREMENT=673319 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='美食店铺基本数据表';
查询执行计划
EXPLAIN
select id, shop_name, price, collects, shop_grade, address, longitude, latitude from t_food_shop where geo_hash like 'wecny%';
geo_hash字段建立了索引,按照前缀查询,但是索引失效了。
“wecny”字符串长度为5,我们就来看看长度为5的字符串的重复率
select count(1) from t_food_shop;
SELECT (count(*) / 63061 ) percent,count(*) cnt,LEFT(geo_hash,5) prefix
FROM t_food_shop GROUP BY prefix ORDER BY percent DESC LIMIT 0,10;
可以看到,前缀为“wecny”的重复率竟然占到了0.2234,区分度大小了,mysql选择了全表扫描。
我们来试试百分比为0.0338前缀为"wecp3"的执行计划
EXPLAIN
select id, shop_name, price, collects, shop_grade, address, longitude, latitude from t_food_shop where geo_hash like 'wecp3%';
可以看到使用到了idx_geohash索引
结论:字段值的重复率过高会导致索引失效
MySQL like查询后置%索引失效分析相关推荐
- mysql 索引失效分析
大神总结的索引失效一句话理解后就不用看我下面的文章了,这就是 "模型数空运最快" 模:模糊查询like %在前面索引失效 型:数据类型有变化索引失效 数:索引列使用了函数索引失效 ...
- mysql查询where后面索引失效_where条件索引失效情况
虽然说索引在使用上可能有种种限制,但是还是在数据库设计中被充分利用.因为在大部分情况下索引还是被用来提高数据库性能的一个工具.不过有些数据库工程师往往会犯一些低级的错误,导致索引失效.如在Where条 ...
- mysql分表后怎么索引_分库分表后的索引问题
摘要 最近遇到一个慢sql,在排查过程中发现和分库分表后的索引设置有关系,总结了下问题. 问题 在进行应用健康度盘点时,发现有个慢sql 如下 select brandgoodid from bran ...
- mysql范围查询如何建索引_MySQL索引(二):建索引的原则
在了解了索引的基础知识及B+树索引的原理后(如需复习请点这里),这一节我们了解一下有哪些建索引的原则,来指导我们去建索引. 建索引的原则 1. 联合索引 我们可能听一些数据库方面的专业人士说过:&qu ...
- mysql隐式转换造成索引失效的事故总结
隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样 ...
- 索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效
索引的使用 索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题 验证索引提升查询效率 查询速度很快,接近0s ,主要的原因是因为id为主键,有索 ...
- mysql 联合查询后排序_MySQL的查询(联合查询,查询排序,正则表达式)
MySQL的查询(联合查询,查询排序,正则表达式) MySQL的查询(联合查询,查询排序,正则表达式) MySQL的查询 联合查询实例 -- 联合查询 SELECT * FROM user union ...
- 前置++与后置++的要点分析
前置++和后置++,都是自增1,但是表达式返回值不同.执行效率上前置++更快. 前置++返回是自增之后的值. 等价于num+=1; rerurn num; 后置++返回的是自增之前的值. 等价于 i ...
- MySQL范围查找时,索引失效问题探究
今日推荐 Java 8 一行代码解决了空指针问题,太厉害了...List中remove()方法的陷阱,被坑惨了!25000 字详解 23 种设计模式,原来可以这么简单!最牛逼的 Java 日志框架,性 ...
最新文章
- 大佬教你极简方法来处理Android SharedPreferences设计与实现
- 高达82 fps的实时文本检测,可微分二值化模块
- 三心二意,助你好运?
- FTP使用外部数据源
- ios程序中调用腾讯OpenAPI时遇到的问题
- wifi的country code
- Java面经-海康威视
- Win10 CMD命令大全—超好用快捷键
- 控制工程实践(8)——PID四种类型控制器(之比例-积分控制器PI)
- 2019下半年计算机二级c语言,2019年下半年计算机二级C语言试题(4)
- ODC(Orthogonal Defect Classification)简介
- Android卡通农场闪退,卡通农场闪退解决办法
- 什么是汽车公告?汽车公告主机厂要做什么?
- 甲级测绘资质审批常见问题-甲级测绘资质如何办理?
- IoT:OneNET - 中国移动物联网平台介绍
- 研究生博士生都喜欢逛哪些网站?
- RNNLSTM学习总结
- MRP(物料需求计划) 的运作机制
- C语言程序设计(第二版) 主编:余贞侠 何钰娟 课后习题 代码题答案
- gpt linux双系统安装win7系统分区格式化,在不格式化gpt分区的情况下重新安装win7系统的教程...
热门文章
- 计算机辅助插图设计读书心得,计算机辅助设计课程心得体会
- 台式计算机主板能换吗,可以更换台式机CPU吗?将台式计算机更改为CPU的步骤
- android保存连接地址到桌面快捷方式,Android创建桌面快捷方式两种方法
- 【欧拉回路】【欧拉路径】【Fleury算法】CDOJ1634 记得小苹初见,两重心字罗衣...
- linux gzip和tar一起用,Linux下压缩工具gzip和归档工具tar及其实战shell应用
- vlc视频转发注意事项海康摄像头上云注意事项
- 远光软件2020年报: 创新效能持续释放,营收利润稳健增长
- TurtleBot3 循线机器人
- 小米电动滑板车被曝漏洞,黑客可远程控制 1
- sci论文绘图通用规范