Eu tenho exatamente a mesma tabela myisam no mestre e no escravo. Os índices não estão sendo usados no servidor mestre.
mysql> explain select count(date_time) from ox_data_summary_ad_hourly where date_time = '2012-03-08 00:00:00' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: ox_data_summary_ad_hourly
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 32212292
Extra: Using where
1 row in set (0.00 sec)
O plano de explicação no escravo:
mysql> explain select count(date_time) from ox_data_summary_ad_hourly where date_time = '2012-03-08 00:00:00' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: ox_data_summary_ad_hourly
type: ref
possible_keys: ox_data_summary_ad_hourly_date_time
key: ox_data_summary_ad_hourly_date_time
key_len: 8
ref: const
rows: 156769
Extra: Using index
1 row in set (0.00 sec)
O mestre é 5.0 enquanto o escravo está na versão 5.5, se isso importa.
Isso significa que o arquivo de índice no mestre está corrompido?
A regra geral usual para o MySQL Query Optimizer é esta:
Se o plano EXPLAIN precisar ler mais de 5% das linhas da tabela por meio do índice, o índice será descartado (excluído) e uma verificação completa da tabela será executada.
No caso do Slave, 156769 de 32212292 linhas devem ser lidas. Isso é 0,4867%. Portanto, o índice é usado.
Com relação ao Master, é muito preocupante que o MySQL Query Optimizer tenha descartado os índices. Como o @ypercube comentou, talvez não haja index.
Você deve certificar-se executando
SHOW CREATE TABLE ox_data_summary_ad_hourly\G
em Master e Slave. Se forem diferentes, poste as duas saídas na pergunta.Além disso, execute
SELECT COUNT(1) FROM ox_data_summary_ad_hourly;
no mestre e no escravo e publique essas contagens