mysql 整型 引号 索引_Mysql查询语句中的引号对索引的影响

  • Post author:
  • Post category:mysql


# explain select * from t1 where user_ip=123 limit 1;——————————————————————————————-| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |——-

# explain select * from t1 where user_ip=123 limit 1;

+—-+————-+————-+——+—————+——+———+——+——+————-+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+—-+————-+————-+——+—————+——+———+——+——+————-+

| 1 | SIMPLE | t1 | ALL | user_ip | NULL | NULL | NULL | 262 | Using where |

+—-+————-+————-+——+—————+——+———+——+——+————-+

1 row in set (0.00 sec)

# explain select * from t1 where user_ip=’123′ limit 1;

+—-+————-+————-+——+—————+———+———+——-+——+————-+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+—-+————-+————-+——+—————+———+———+——-+——+————-+

| 1 | SIMPLE | t1 | ref | user_ip | user_ip | 47 | const | 1 | Using where |

+—-+————-+————-+——+—————+———+———+——-+——+————-+

1 row in set (0.01 sec)

可以看到, user_ip 字段是 varchar 类型. 查询时, 如果这个字段的值没有加引号, MySQL 就不会使用索引. MySQL 为什么会有这种致命的策略?!

—– 更新: —–

相关的文档已经找到: http://dev.mysql.com/doc/refman/5.5/en/type-conversion.html,

这里面提到和几种类型转换的情况, 字符串和数字比较都被统一转成浮点数再比较.

Related posts:

MySQL”海量数据”查询性能分析

MySQL 查询使用 Group By 的注意点

史上最强大的PHP MySQL操作类

MySQL 建立外键约束

如何使用SSDB的zscan命令

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!



版权声明:本文为weixin_39873191原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。