Mysql
 sql >> Database >  >> RDS >> Mysql

soft_delete di Laravel ha bisogno di un indice su MySQL?

La colonna deleted_at non è un buon candidato indice. Cercherò di spiegarmi meglio rispetto al commento:gli indici sono utili solo quando la loro cardinalità è relativamente alta. La cardinalità è un numero che descrive l'unicità dell'indice nel set di dati. Ciò significa che è il numero totale di record diviso per il totale dei record univoci.

Ad esempio, la cardinalità della chiave primaria è 1. Ogni record contiene un valore univoco per la chiave primaria. 1 è anche il numero più alto. Puoi considerarlo come un "100%".

Ma una colonna come delete_at non ha tale valore. Quello che fa Laravel con Delete_at è controllare se è o meno null. Ciò significa che ha due valori possibili. Le colonne che contengono due valori hanno una cardinalità estremamente bassa che diminuisce all'aumentare del numero di record.

Puoi indicizzare una tale colonna, ma non sarà di alcun aiuto. Quello che accadrà è che potrebbe rallentare le cose e occupare spazio.

TL;DR:no, non devi indicizzare quella colonna, l'indice non avrà alcun impatto positivo sulle prestazioni.