08.04.2009 14:47Ошибка с NULL и IN в MySQL 5.1
Согласно этому баг репорту, в MySQL 5.1.32 присутствует ошибка оптимизатора, которая приводит к сканированию всей таблицы вместо использования индексов.
Ошибка проявляется в запросах содержащих NULL в выражении IN.
MySQL:
-
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