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

Optymalizacja bazy danych MYSQL za pomocą indeksowania

Odnośnie do pytań o indeksy, indeks jest nie tylko pożądany, ale potrzebny "przyspieszyć" rzeczy. Jak rozumiem (w terminach „laików”), funkcją indeksu jest przyspieszenie wyszukiwania i odzyskiwania danych w tabeli.

Powody używania indeksów:

  1. Zidentyfikuj jednoznacznie każdy wiersz w każdej tabeli (w końcu kluczem podstawowym jest indeks)
  2. Indeksy są posortowane (nawet jeśli dane nie są)
  3. Przyspieszenie wyszukiwania i filtrowania:Indeks przyspiesza odzyskiwanie danych, ponieważ „przechowuje” umieszczenie danych w tabeli („wskazuje” dane, które chcesz odzyskać). Ułatwia także silnikowi bazy danych filtrowanie danych (zawsze filtrowanie posortowane jest szybsze i prostsze dane niż zaszyfrowane dane)
  4. Zoptymalizuj sposób odzyskiwania danych podczas korzystania z powiązanych tabel:każdy klucz obcy musi być zindeksowany w celu przyspieszenia zapytań obejmujących relacje klucza podstawowego i obcego

Niektóre „zasady dotyczące kciuków”, których używam do decydowania, które pola mają być indeksowane:

  • Każdy klucz podstawowy jest indeksowany (oczywisty pierwszy:klucz podstawowy musi być unikalny i nie może być pusty)
  • Każdy klucz obcy musi być zaindeksowany (aby relacje klucz podstawowy-klucz obcy były efektywne)
  • Każde pole liczbowe lub pole daty, według którego muszę przeprowadzić wyszukiwanie, musi być zaindeksowane. To powiedziawszy, staram się unikać double (lub dowolnego innego typu liczb zmiennoprzecinkowych), które mają być indeksowane, ponieważ są one zwykle używane do przechowywania wartości, które nie mają być przeszukiwane.
  • Każdy char lub varchar pole, na którym muszę przeprowadzić wyszukiwanie, musi być zaindeksowane. Staraj się unikać indeksów w text pola, ponieważ mogą przechowywać w nich bardzo duże wartości.
  • Unikaj indeksowanie pliku binarnego (blob ) pola... to nie ma sensu
  • Nie popaść w pokusę indeksowania wszystkiego. Nie spiesz się, aby zdecydować, które pola muszą być indeksowane, a które pola nie mogą być indeksowane.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd podczas instalacji mysql2:Nie udało się zbudować natywnego rozszerzenia gem

  2. Odpowiednik explode() do pracy z ciągami w MySQL

  3. php mysqli_connect:metoda uwierzytelniania nieznana klientowi [caching_sha2_password]

  4. Zapytanie Mysql z Left Join jest zbyt wolne

  5. Uzyskaj identyfikator wiersza, gdy naruszony jest UNIQUE KEY