为什么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;
提前致谢
答案 0 :(得分:1)
字段的数据类型是char,但您在查询中使用整数。发生的事情是隐式转换为char。它看起来不是严重的问题,但实际上它会阻止MySQL使用索引!始终关注数据类型!
将您的查询更改为:
explain SELECT a,b FROM
{zip25 {1}}