`
wx1569063608
  • 浏览: 23646 次
文章分类
社区版块
存档分类
最新评论

MySQL 5.1中IN查询不要用到NULL条件

 
阅读更多
原文见:http://pento.net/2009/04/08/dont-put-a-null-in-the-in-clause-in-51/
如果在 IN 语句中用到 NULL 条件, 会导致全表扫描:
CREATE TABLE foo (
a INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (a)
);
来看看2次查询的区别:
mysql> EXPLAIN * FROM foo WHERE a IN (160000, 160001, 160002)\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: foo
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 3
Extra: Using where
1 row in set (0.06 sec)
mysql> EXPLAIN SELECT * FROM foo WHERE a IN (NULL, 160000, 160001, 160002)\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: foo
type: ALL
possible_keys: PRIMARY
key: NULL
key_len: NULL
ref: NULL
rows: 327680
Extra: Using where
1 row in set (0.00 sec)
再加上之前其他同学测试出来的问题: MySQL 5.1 中 Innodb 的事务完整性Bug,看来mysql5.1还是不太靠谱啊,如果不是迫不得已,还是少用吧 :)
本文出自 “MySQL中文网”博客 http://www.imysql.cn/

本文出自 “老叶茶馆” 博客,转载请与作者联系!

转载于:https://my.oschina.net/yejr/blog/878639

分享到:
评论

相关推荐

    vc连接mysql数据库需要的头文件

    在MySQL 5.1的完整安装中,包含了连接MySQL数据库所需的头文件。以下将详细介绍这些头文件及其作用。 1. `mysql.h`: 这是主要的头文件,包含了MySQL C API的所有核心函数声明。当你在VC项目中包含这个头文件时,你...

    mysql(图书管理系统实验报告).docx

    create procedure js_manager(in r_id char(10),in r_name char(10),in sex char(2), in r_sf char(8), in birthday datetime, in r_ic char(18),in r_tele char(11),in r_addr varchar(30), in r_zip char(6),in b_...

    springmybatis

    mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要...

Global site tag (gtag.js) - Google Analytics