sql >> Base de Datos >  >> RDS >> Mysql

¿Soft_delete de Laravel necesita un índice en MySQL?

La columna deleted_at no es un buen candidato a índice. Intentaré explicarme mejor en comparación con el comentario:los índices son útiles solo cuando su cardinalidad es relativamente alta. La cardinalidad es un número que describe la singularidad del índice en el conjunto de datos. Eso significa que es el número total de registros dividido por el total de registros únicos.

Por ejemplo, la cardinalidad de la clave principal es 1. Cada registro contiene un valor único para la clave principal. 1 es también, el número más alto. Puedes considerarlo como un "100%".

Pero, una columna como delete_at no tiene ese valor. Lo que hace Laravel con delete_at es verificar si es nulo o no. Eso significa que tiene dos valores posibles. Las columnas que contienen dos valores tienen una cardinalidad extremadamente baja que disminuye a medida que aumenta el número de registros.

Puede indexar dicha columna, pero no será de ninguna ayuda. Lo que sucederá es que podría ralentizar las cosas y ocupar espacio.

TL;DR:no, no tiene que indexar esa columna, el índice no tendrá un impacto beneficioso en el rendimiento.