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

Le soft_delete de Laravel a-t-il besoin d'un index sur MySQL?

La colonne deleted_at n'est pas un bon candidat index. Je vais essayer de mieux expliquer par rapport au commentaire :les index ne sont utiles que lorsque leur cardinalité est relativement élevée. La cardinalité est un nombre qui décrit l'unicité de l'index dans l'ensemble de données. Cela signifie qu'il s'agit du nombre total d'enregistrements divisé par le nombre total d'enregistrements uniques.

Par exemple, la cardinalité de la clé primaire est 1. Chaque enregistrement contient une valeur unique pour la clé primaire. 1 est aussi le nombre le plus élevé. Vous pouvez le considérer comme un "100 %".

Mais, une colonne telle que delete_at n'a pas une telle valeur. Ce que Laravel fait avec delete_at est de vérifier s'il est ou non nul. Cela signifie qu'il a deux valeurs possibles. Les colonnes qui contiennent deux valeurs ont une cardinalité extrêmement faible qui diminue à mesure que le nombre d'enregistrements augmente.

Vous pouvez indexer une telle colonne, mais cela ne vous sera d'aucune utilité. Ce qui se passera, c'est que cela pourrait ralentir les choses et prendre de la place.

TL;DR :non, vous n'êtes pas obligé d'indexer cette colonne, l'indexation n'aura aucun impact bénéfique sur les performances.