Por favor, olhe a seguinte tabela Mysql: http://pastebin.com/b0NDSbdz
Eu particionei a tabela sent_at
e estou certificando-me de que a maioria das consultas passe sent_at
. preciso incluir sent_at
em todos os índices?
você identifica algum índice redundante em potencial?
quando incluo o sent_at
nos índices, tem que ser o primeiro campo na declaração do índice?
Várias perguntas, várias respostas:
Não há necessidade de "identificar" possíveis índices redundantes: use common_schema ou Percona Toolkit para encontrar essas chaves. Mas eu verifiquei - e não, não há chaves redundantes.
Você não precisa usar
sent_at
nos índicesSe o fizer, não importa (em termos de partição) onde no índice.
Mas a única coisa que não é contada é como você consulta sua tabela. Você faz uma verificação de igualdade na maioria dos campos e uma verificação de intervalo
sent_at
? Nesse caso, é melhor tersent_at
indexado por último. Se houver uma verificação de igualdadesent_in
ou verificação de intervalo no mesmo campo, com pouca ou nenhuma filtragem em outras colunas,sent_in
indexe por si só ou primeiro na sequência. Agora você tem 1 mês de dados em cada partição; indexá-lo por tempo não é uma má ideia.