mysql索引合并问题

时间:2012-04-14 11:29:09

标签: mysql optimization indexing

为什么mysql没有使用index_merge?

看起来我的服务器的index_merge已开启,但优化​​器仍未考虑。

optimizer switch    index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on



explain SELECT a,b FROM `zip25` WHERE b=91367 OR a=91367


id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE          zip25   ALL a,b         NULL    NULL    NULL    752299  Using where

[编辑]
表定义

CREATE TABLE `zip25` (
  `a` char(5) DEFAULT NULL,
  `b` char(5) DEFAULT NULL,
  `distance` float NOT NULL,
  KEY `a` (`a`),
  KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

提前致谢

1 个答案:

答案 0 :(得分:1)

字段的数据类型是char,但您在查询中使用整数。发生的事情是隐式转换为char。它看起来不是严重的问题,但实际上它会阻止MySQL使用索引!始终关注数据类型!

将您的查询更改为:

explain SELECT a,b FROM {zip25 {1}}