Mysql
 sql >> Base de données >  >> RDS >> Mysql

Optimisation de l'instruction de suppression MySQL

Si votre DELETE est destiné à éliminer une grande majorité des lignes de cette table, une chose que les gens font souvent est de copier uniquement les lignes que vous souhaitez conserver dans une table en double, puis d'utiliser DROP TABLE ou TRUNCATE pour effacer la table d'origine beaucoup plus rapidement.

Un index peut aider à trouver les lignes que vous devez supprimer, mais la suppression nécessite la mise à jour de l'index. Après avoir supprimé un grand nombre de lignes, l'index peut être déséquilibré et nécessite une maintenance avec OPTIMIZE TABLE .

Le DATE_SUB() La fonction est une expression constante (elle ne varie pas ligne par ligne). L'optimiseur de requête doit donc être suffisamment intelligent pour l'exclure et effectuer le calcul une seule fois.

Vous n'avez pas besoin de créer un index supplémentaire pour une clé primaire. La contrainte de clé primaire crée implicitement un index qui offre le même avantage qu'un index de clé non primaire.

Un index composé est probablement aussi utile qu'un index à colonne unique, à condition que vos critères de recherche fassent référence à la ou aux colonnes les plus à gauche de l'index. La mise en garde "probablement" est due au fait que les nœuds d'index individuels sont plus grands et qu'il faut donc plus de mémoire pour mettre en cache l'index, mais c'est un facteur suffisamment petit pour que je ne crée pas un tout autre index à une seule colonne.