Velocidade das Consultas que Utilizam SELECT
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. Leia "Como o MariaDB 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
. Leia "Sintaxe de EXPLAIN
(Obter informações sobre uma SELECT
)".
Algumas dicas gerais:
- Para ajudar o MariaDB 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 MariaDB usará isto para decidir qual índice escolher quando você conectar duas tabelas utilizando uma 'expressão não constante'. Os resultados deanalyze
podem ser conferidos utilizandoSHOW INDEX FROM nome_tabela
e examindo a colunaCardinality
. - 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!