drop table if exists t1; create table t1 (id int not null, str char(10), unique(str)); insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar"); select * from t1 where str is null; id str 1 NULL 2 NULL select * from t1 where str="foo"; id str 3 foo explain select * from t1 where str is null; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref str str 11 const 1 where used explain select * from t1 where str="foo"; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const str str 11 const 1 explain select * from t1 ignore key (str) where str="foo"; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 where used explain select * from t1 use key (str,str) where str="foo"; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const str str 11 const 1 explain select * from t1 use key (str,str,foo) where str="foo"; Key column 'foo' doesn't exist in table explain select * from t1 ignore key (str,str,foo) where str="foo"; Key column 'foo' doesn't exist in table drop table t1; explain select 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE No tables used