08.04.2009 14:47Ошибка с NULL и IN в MySQL 5.1

Согласно этому баг репорту, в MySQL 5.1.32 присутствует ошибка оптимизатора, которая приводит к сканированию всей таблицы вместо использования индексов.

Ошибка проявляется в запросах содержащих NULL в выражении IN.

MySQL:
  1. mysql> EXPLAIN * FROM foo WHERE a IN (160000, 160001, 160002)\G
  2. *************************** 1. row ***************************
  3.            id: 1
  4.   select_type: SIMPLE
  5.         table: foo
  6.          type: range
  7. possible_keys: PRIMARY
  8.           key: PRIMARY
  9.       key_len: 4
  10.           ref: NULL
  11.          rows: 3
  12.         Extra: USING WHERE
  13. 1 row in SET (0.06 sec)
  14.  
  15. mysql> EXPLAIN SELECT * FROM foo WHERE a IN (NULL, 160000, 160001, 160002)\G
  16. *************************** 1. row ***************************
  17.            id: 1
  18.   select_type: SIMPLE
  19.         table: foo
  20.          type: ALL
  21. possible_keys: PRIMARY
  22.           key: NULL
  23.       key_len: NULL
  24.           ref: NULL
  25.          rows: 327680
  26.         Extra: USING WHERE
  27. 1 row in SET (0.00 sec)

Похожие записи:

Комментариев нет | Рубрики: MySQL

Post Your Comment

Немного о себе




Комментарий

*