MySQL索引使用:字段为varchar类型时,条件要使用''包起来
结论:
当MySQL中字段为int类型时,搜索条件where num='111' 与where num=111都可以使用该字段的索引。
当MySQL中字段为varchar类型时,搜索条件where num='111' 可以使用索引,where num=111 不可以使用索引
验证过程:
建表语句:
1 2 3 4 5 6 7 8 9 | CREATE TABLE `gyl` ( `id` int (11) NOT NULL AUTO_INCREMENT, `str` varchar (255) NOT NULL , `num` int (11) NOT NULL DEFAULT '0' , `obj` varchar (255) DEFAULT NULL , PRIMARY KEY (`id`), KEY `str_x` (`str`), KEY `num_x` (`num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
向表中使用自复制语句插入数据
insert into gyl (`str`,`num`)values(123123,'12313');
insert into gyl (`str`,`num`) select `str`,`num` from gyl;
更改数据 update gyl set num=id,str=id
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | mysql> explain select * from gyl where str=123123 limit 1; + ----+-------------+-------+------+---------------+------+---------+------+--------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | + ----+-------------+-------+------+---------------+------+---------+------+--------+-------------+ | 1 | SIMPLE | gyl | ALL | str_x | NULL | NULL | NULL | 262756 | Using where | + ----+-------------+-------+------+---------------+------+---------+------+--------+-------------+ 1 row in set mysql> explain select * from gyl where str= '123123' limit 1; + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------------+ | 1 | SIMPLE | gyl | ref | str_x | str_x | 257 | const | 131378 | Using where | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------------+ 1 row in set mysql> explain select * from gyl where num= '12313' limit 1;; + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ | 1 | SIMPLE | gyl | ref | num_x | num_x | 4 | const | 131378 | | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ 1 row in set 1065 - Query was empty mysql> explain select * from gyl where num=12313 limit 1; + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ | 1 | SIMPLE | gyl | ref | num_x | num_x | 4 | const | 131378 | | + ----+-------------+-------+------+---------------+-------+---------+-------+--------+-------+ 1 row in set |
分类:
MySQL学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现