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

O soft_delete do Laravel precisa de índice no MySQL?


A coluna deleted_at não é um bom candidato a índice. Vou tentar explicar melhor em comparação com o comentário:os índices são úteis apenas quando sua cardinalidade é relativamente alta. Cardinalidade é um número que descreve a exclusividade do índice no conjunto de dados. Isso significa que é o número total de registros dividido pelo total de registros exclusivos.

Por exemplo, a cardinalidade da chave primária é 1. Cada registro contém um valor exclusivo para a chave primária. 1 também é o número mais alto. Você pode considerá-lo como um "100%".

Mas, uma coluna como delete_at não tem esse valor. O que o Laravel faz com delete_at é verificar se é ou não null. Isso significa que tem dois valores possíveis. As colunas que contêm dois valores têm cardinalidade extremamente baixa, que diminui à medida que o número de registros aumenta.

Você pode indexar essa coluna, mas não será de nenhuma ajuda. O que vai acontecer é que isso pode desacelerar as coisas e ocupar espaço.

TL;DR:não, você não precisa indexar essa coluna, o índice não terá impacto benéfico no desempenho.