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

Behøver Laravels soft_delete indeks på MySQL?

Kolonnen deleted_at er ikke en god indekskandidat. Jeg vil prøve at forklare bedre sammenlignet med kommentaren:indekser er kun nyttige, når deres kardinalitet er relativt høj. Kardinalitet er et tal, der beskriver indeksets unikke karakter i datasættet. Det betyder, at det er det samlede antal poster divideret med det samlede antal unikke poster.

For eksempel er den primære nøgles kardinalitet 1. Hver post indeholder en unik værdi for primærnøgle. 1 er også det højeste tal. Du kan betragte det som et "100 %".

Men en kolonne som deleted_at har ikke en sådan værdi. Hvad Laravel gør med deleted_at er at kontrollere, om den er null eller ikke. Det betyder, at den har to mulige værdier. Kolonner, der indeholder to værdier, har ekstremt lav kardinalitet, som falder, efterhånden som antallet af poster stiger.

Du kan indeksere sådan en kolonne, men det vil ikke være til nogen hjælp. Det, der vil ske, er, at det kan bremse tingene og optage plads.

TL;DR:nej, du behøver ikke at indeksere den kolonne, indeks vil ikke have nogen gavnlig indflydelse på ydeevnen.



  1. Postgresql:Scripting af psql-udførelse med adgangskode

  2. (Dansk) Sådan bruger du Oracle Database 19c Pre-Built Developer VM

  3. Emoji indsættes ikke i databasenoden js mysql

  4. MySQL rækkefølge efter bedste match