Em geral, quando você desejar tornar uma consulta lenta
SELECT ... WHERE
mais rápida, a primeira
coisa que deve ser conferida é se você pode ou não adicionar
um índice. See Secção 5.4.3, “Como o MySQL Utiliza Índices”. Todas as
referências entre diferentes tabelas devem ser feitas
normalmente com índices. Você pode utilizar o comando
EXPLAIN
para determinas quais índices são
usados para uma SELECT
. See
Secção 5.2.1, “Sintaxe de EXPLAIN
(Obter informações sobre uma
SELECT
)”.
Algumas dicas gerais:
Para ajudar o MySQL a otimizar melhor as consultas, execute
myisamchk --analyze
em uma tabela depois
dela ter sido carregada com dados relevantes. Isto atualiza
um valor para cada parte do índice que indica o número
médio de registros que tem o mesmo valor. (Para índices
únicos, isto é sempre 1, é claro). O MySQL usará isto
para decidir qual índice escolher quando você conectar
duas tabelas utilizando uma 'expressão não constante'. Os
resultados de analyze
podem ser
conferidos utilizando SHOW INDEX FROM
nome_tabela
e examindo a coluna
Cardinality
.
Para ordenar um índice e dados de acordo com um índice,
utilize myisamchk --sort-index
--sort-records=1
(se você deseja ordenar pelo
índice 1). Se você possui um índice unico no qual deseja
ler todos registros na ordem do índice, esta é uma boa
forma para torná-lo mais rápido. Perceba entretanto, que
esta ordenação não foi escrita de maneira otimizada e
levará muito tempo em tabelas grandes!
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.