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

Wszystkie kolumny tabeli powinny być indeksowane, czy nie mysql bazy danych?

Tworzenie indeksu wymaga dodatkowego miejsca na dysku, a zbyt duża liczba indeksów może powodować problemy wynikające z ograniczeń rozmiaru systemów plików, dlatego należy starannie przemyśleć wybór odpowiednich pól do indeksowania.

Ponieważ indeksy są używane tylko do przyspieszenia wyszukiwania pasującego pola w rekordach, jest zrozumiałe, że indeksowanie pól używanych tylko do danych wyjściowych byłoby po prostu stratą miejsca na dysku i czasu przetwarzania podczas wykonywania operacji wstawiania lub usuwania, a zatem należy unikać. Również biorąc pod uwagę charakter wyszukiwania binarnego, ważna jest kardynalność lub niepowtarzalność danych. Indeksowanie w polu o liczności 2 podzieliłoby dane na pół, podczas gdy liczność 1000 zwróciłaby około 1000 rekordów. Przy tak niskiej kardynalności skuteczność jest zredukowana do sortowania liniowego, a optymalizator zapytań uniknie używania indeksu, jeśli kardynalność jest większa niż 30% liczby rekordu, co skutecznie powoduje, że indeks jest marnowaniem miejsca.

Lepiej więc dodać indeksowanie do grupy kolumn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:aktualizuj pole tylko wtedy, gdy warunek jest spełniony

  2. Połącz wiele wierszy podrzędnych w jeden wiersz MYSQL

  3. Node.js łączy się z kontenerem MySQL Docker ECONNREFUSED

  4. NodeJS/mySQL - ER_ACCESS_DENIED_ERROR Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:TAK)

  5. szukaj z wielu tabel za pomocą jednego słowa kluczowego w mysql