Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy soft_delete Laravela potrzebuje indeksu na MySQL?

Kolumna deleted_at nie jest dobrym kandydatem na indeks. Postaram się lepiej wyjaśnić w porównaniu do komentarza:indeksy są przydatne tylko wtedy, gdy ich kardynalność jest stosunkowo wysoka. Kardynalność to liczba opisująca unikalność indeksu w zestawie danych. Oznacza to, że jest to całkowita liczba rekordów podzielona przez całkowitą liczbę unikalnych rekordów.

Na przykład liczność klucza podstawowego wynosi 1. Każdy rekord zawiera unikalną wartość klucza podstawowego. 1 jest również najwyższą liczbą. Możesz uznać to za „100%”.

Ale kolumna taka jak delete_at nie ma takiej wartości. To, co Laravel robi z usuniętymi_at, to sprawdzanie, czy jest on pusty, czy nie. Oznacza to, że ma dwie możliwe wartości. Kolumny zawierające dwie wartości mają wyjątkowo niską kardynalność, która zmniejsza się wraz ze wzrostem liczby rekordów.

Możesz zaindeksować taką kolumnę, ale to nie pomoże. Co się stanie, może spowolnić działanie i zająć miejsce.

TL;DR:nie, nie musisz indeksować tej kolumny, indeks nie będzie miał korzystnego wpływu na wydajność.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizowano do Ubuntu 16.04 teraz zależności MySQL-python są zepsute

  2. Błąd składni w instrukcji MERGE

  3. SQL SELECT LIKE (niewrażliwa wielkość liter)

  4. wybierz 30 losowych wierszy, gdzie suma =x

  5. Policz wszystkie rekordy, które nie istnieją w innej tabeli - Zapytanie SQL