zoukankan      html  css  js  c++  java
  • MySQL索引使用:字段为varchar类型时,条件要使用''包起来


    结论:

    当MySQL中字段为int类型时,搜索条件where num='111' 与where num=111都可以使用该字段的索引。
    当MySQL中字段为varchar类型时,搜索条件where num='111' 可以使用索引,where num=111 不可以使用索引

    验证过程:

        建表语句:

    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

    结果:

    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
    

      

  • 相关阅读:
    如何度过每天的最初十分钟
    微软正在拿命做一场豪赌
    .htaccess用法与设置超详细讲解+大全
    互联网+情趣用品:羞答答的玫瑰静悄悄地开
    男人雄辩 女人聊天
    苹果手表会一直美下去
    移动应用大行其道:你的企业准备好了吗?
    微商的下一步会怎么走?
    阿里京东腾讯58的O2O格局,创业者的夹缝生存之道
    苹果首席设计师艾维:Apple Watch不是奢侈品
  • 原文地址:https://www.cnblogs.com/jixingke/p/8486075.html
Copyright © 2011-2022 走看看