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
    

      

  • 相关阅读:
    给VPS装桌面
    GIT免密码PUSH
    验证码类
    Url几个常用的函数
    PHP--关于模板的原理和解析
    管理员权限执行批处理和静默执行regsvr32注册
    linux 维护常见场景小命令 (未完待续)
    批处理定时重启print打印服务,解决打印机异常队列堆积
    Linux----LVM扩容磁盘空间
    6、Samba 服务器配置
  • 原文地址:https://www.cnblogs.com/jixingke/p/8486075.html
Copyright © 2011-2022 走看看