Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimização da instrução de exclusão do MySQL


Se o seu DELETE destina-se a eliminar a grande maioria das linhas nessa tabela, uma coisa que as pessoas costumam fazer é copiar apenas as linhas que você deseja manter em uma tabela duplicada e, em seguida, usar DROP TABLE ou TRUNCATE para eliminar a mesa original muito mais rapidamente.

Um índice pode ajudar a encontrar as linhas que você precisa excluir, mas a exclusão requer a atualização do índice. Depois de excluir muitas linhas, o índice pode estar desequilibrado e requer alguma manutenção com OPTIMIZE TABLE .

O DATE_SUB() A função é uma expressão constante (não varia linha a linha), portanto, o otimizador de consulta deve ser inteligente o suficiente para fatorá-la e realizar o cálculo uma vez.

Você não precisa criar um índice extra para uma chave primária. A restrição de chave primária cria implicitamente um índice que oferece o mesmo benefício que um índice de chave não primária.

Um índice composto provavelmente é tão útil quanto um índice de coluna única, desde que seus critérios de pesquisa façam referência à(s) coluna(s) mais à esquerda do índice. A ressalva "provavelmente" se deve ao fato de os nós de índice individuais serem maiores e, portanto, é preciso mais memória para armazenar em cache o índice, mas esse é um fator pequeno o suficiente para que eu não crie um outro índice de coluna única.