MySQL 5.1中IN查询不要用到NULL条件
生活随笔
收集整理的這篇文章主要介紹了
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/
總結
以上是生活随笔為你收集整理的MySQL 5.1中IN查询不要用到NULL条件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科防火墙PIX ASA精华配置总结
- 下一篇: 动手完善个性化弹出提示框的过程及乐趣