如何解决MySql整型索引和字符串索引失效或隐式转换问题
发表于:2024-10-09 作者:千家信息网编辑
千家信息网最后更新 2024年10月09日,这篇文章主要为大家展示了"如何解决MySql整型索引和字符串索引失效或隐式转换问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何解决MySql整型索引
千家信息网最后更新 2024年10月09日如何解决MySql整型索引和字符串索引失效或隐式转换问题
这篇文章主要为大家展示了"如何解决MySql整型索引和字符串索引失效或隐式转换问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何解决MySql整型索引和字符串索引失效或隐式转换问题"这篇文章吧。
问题重现
首先我们先创建一张用户表test_user,其中USER_ID为了效果我们设置为varchar类型且加上唯一索引。
CREATE TABLE test_user ( ID int(11) NOT NULL AUTO_INCREMENT, USER_ID varchar(11) DEFAULT NULL COMMENT '用户账号', USER_NAME varchar(255) DEFAULT NULL COMMENT '用户名', AGE int(5) DEFAULT NULL COMMENT '年龄', COMMENT varchar(255) DEFAULT NULL COMMENT '简介', PRIMARY KEY (ID) UNIQUE KEY UNIQUE_USER_ID (USER_ID) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表格数据如下(嘻嘻 数据依旧使用与上次Mysql的文章MySQL使用UNION连接两个查询排序失效相同的数据,但是要注意表结构不同。)
ID | USER_ID | USER_NAME | AGE | COMMENT |
---|---|---|---|---|
1 | 111 | 开心菜鸟 | 18 | 今天很开心 |
2 | 222 | 悲伤菜鸟 | 21 | 今天很悲伤 |
3 | 333 | 认真菜鸟 | 30 | 今天很认真 |
4 | 444 | 高兴菜鸟 | 18 | 今天很高兴 |
5 | 555 | 严肃菜鸟 | 21 | 今天很严肃 |
接下来我们执行以下sql
EXPLAIN SELECT * FROM test_user WHERE USER_ID = 111;
发现给出的解释结果如下:
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | test_user | ALL | 5 | Using where |
我们给条件加上引号后再解释以下:
EXPLAIN SELECT * FROM test_user WHERE USER_ID = '111';
这时候我们发现varchar类型的字段在作为字符串查询的时候使用了索引,在以数值类型进行查询时是不使用索引的。
问题引申
那么问题来了,如果字段是整型的且加上索引,以字符串查询时会不会也不走索引呢?实践出真知,让我们再接着往下测试一下。
-- 将USER_ID的类型修改为整型CREATE TABLE test_user ( ID int(11) NOT NULL AUTO_INCREMENT, USER_ID int(11) DEFAULT NULL COMMENT '用户账号', USER_NAME varchar(255) DEFAULT NULL COMMENT '用户名', AGE int(5) DEFAULT NULL COMMENT '年龄', COMMENT varchar(255) DEFAULT NULL COMMENT '简介', PRIMARY KEY (ID), UNIQUE KEY UNIQUE_USER_ID (USER_ID) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
EXPLAIN SELECT * FROM test_user WHERE USER_ID = 111;
EXPLAIN SELECT * FROM test_user WHERE USER_ID = '111';
在执行了上面两个语句后我们发现,int类型的字段无论是以字符串查询还是以数值型查询都会走索引。
以上是"如何解决MySql整型索引和字符串索引失效或隐式转换问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
索引
字符
字符串
问题
查询
用户
类型
菜鸟
内容
字段
数据
篇文章
高兴
悲伤
两个
年龄
数值
用户名
简介
账号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术方向的理解
我的世界地下城连接不到服务器
ios开发用软件开发
现在网络安全状况怎么样
数据库技术发展的过程
服务器地址ping不通
易语言保存DB数据库
文档管理服务器怎么建
工业网络技术论文题目
夯实网络安全防护基础
互联网 科技 避税
office服务器管理器
服务器系统份额
联想rd640服务器
服务器电脑有什么用
nas 网络安全监控
上网检测代理服务器设置
安康得创网络技术有限公司税
服务器怎么连接电脑打印机
数据库转行数据分析
网络安全法施行日期是
打造网络安全宣传新路
网络安全后的陪伴计划
数据库的用户从哪里找
sap软件开发用什么语言
战争雷霆 聊天服务器
信息检索怎样选择数据库
网络安全的工作
浏览器安全协议连接服务器
18年网络安全知识竞赛