ускорит булевский тест, при котором вы запрашиваете значение, которое встречается очень редко, но замедлится при запросе очень распространенного значения. Замедление происходит из-за отскока вперед и назад между 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 .. Почему это так?

Ответы на вопрос(1)

Ваш ответ на вопрос