ускорит булевский тест, при котором вы запрашиваете значение, которое встречается очень редко, но замедлится при запросе очень распространенного значения. Замедление происходит из-за отскока вперед и назад между BTree индекса и BTree данных. Намного быстрее (для общего значения) просто читать данные.
ложная проблема, с которой я столкнулся:
Query:
EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE queue_servers ALL live NULL NULL NULL 6 Using where
Query:
EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=0
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE queue_servers ref live live 1 const 1
SHOW INDEXES FROM queue_servers
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
queue_servers 1 live 1 live A 6 NULL NULL BTREE
Есть идеи? Это сводит меня с ума. Если я просто попробую выбрать один столбец, как это:
EXPLAIN SELECT id FROM queue_servers WHERE live=1
Это работает просто отлично ... Но если я попытаюсь выбрать столбец "имя хоста" или добавить его в список выбора столбцов, он не будет использовать живой индекс, если я не ищу live = 0 .. Почему это так?