文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql varchar int 123 走索引吗?

2019-06-26 13:16

关注

mysql varchar int 123 走索引吗?

结论:

当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

字段类型不同造成的隐式转换,导致索引失效

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯