use ref not range for ... WHERE key IN (val)

parent 3b34ea8c
...@@ -255,7 +255,7 @@ t1 ref y y 5 const 1 Using where ...@@ -255,7 +255,7 @@ t1 ref y y 5 const 1 Using where
t2 range x x 5 NULL 2 Using where t2 range x x 5 NULL 2 Using where
explain select count(*) from t1 where x in (1); explain select count(*) from t1 where x in (1);
table type possible_keys key key_len ref rows Extra table type possible_keys key key_len ref rows Extra
t1 range x x 5 NULL 1 Using where; Using index t1 ref x x 5 const 1 Using where; Using index
explain select count(*) from t1 where x in (1,2); explain select count(*) from t1 where x in (1,2);
table type possible_keys key key_len ref rows Extra table type possible_keys key key_len ref rows Extra
t1 range x x 5 NULL 2 Using where; Using index t1 range x x 5 NULL 2 Using where; Using index
......
...@@ -1590,12 +1590,14 @@ add_key_fields(JOIN_TAB *stat,KEY_FIELD **key_fields,uint *and_level, ...@@ -1590,12 +1590,14 @@ add_key_fields(JOIN_TAB *stat,KEY_FIELD **key_fields,uint *and_level,
// BETWEEN or IN // BETWEEN or IN
if (cond_func->key_item()->type() == Item::FIELD_ITEM) if (cond_func->key_item()->type() == Item::FIELD_ITEM)
add_key_field(key_fields,*and_level, add_key_field(key_fields,*and_level,
((Item_field*) (cond_func->key_item()))->field, 0, ((Item_field*) (cond_func->key_item()))->field,
#ifndef TO_BE_REMOVED_IN_4_1 #ifndef TO_BE_REMOVED_IN_4_1
/* special treatment for IN. Not necessary in 4.1 */ /* special treatment for IN. Not necessary in 4.1 */
cond_func->argument_count() == 1,
cond_func->arguments() + (cond_func->functype() != Item_func::IN_FUNC), cond_func->arguments() + (cond_func->functype() != Item_func::IN_FUNC),
cond_func->argument_count() - (cond_func->functype() != Item_func::IN_FUNC), cond_func->argument_count() - (cond_func->functype() != Item_func::IN_FUNC),
#else #else
cond_func->argument_count() == 2,
cond_func->arguments()+1, cond_func->argument_count()-1, cond_func->arguments()+1, cond_func->argument_count()-1,
#endif #endif
usable_tables); usable_tables);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment