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

MySQL — najlepsza metoda obsługi tych danych hierarchicznych?

Quassnoi przeprowadził kilka testów wydajności na modelu zestawów zagnieżdżonych i modelu listy sąsiedztwa oraz udokumentował wyniki i zalecenia w swoim poście na blogu Lista sąsiedztwa a zestawy zagnieżdżone:MySQL . Streszczenie to:

  • Zestawy zagnieżdżone są szybsze w pobieraniu wszystkich węzłów podrzędnych lub wszystkich węzłów nadrzędnych.
  • Zestawy zagnieżdżone to zły pomysł, jeśli często musisz aktualizować tabelę.

Oto wniosek z jego artykułu:

Dalsza część artykułu pokazuje, jak zdefiniować tabelę, zaimplementować zapytania i podać pomiary wydajności. Użycie indeksu przestrzennego to sprytny pomysł na poprawę wydajności zagnieżdżonego modelu zestawu, który może być dla Ciebie nowy.

Jeśli rozważasz również podejścia bez MySQL, możesz przyjrzeć się PostgreSQL która jest kolejną darmową bazą danych o otwartym kodzie źródłowym. PostgreSQL obsługuje zapytania rekurencyjne w postaci rekurencyjne wspólne wyrażenia tabelowe które sprawiają, że zapytania o dane heirarchiczne są łatwiejsze niż w MySQL, a także zapewniają lepszą wydajność. Quassnoi napisał również artykuł Lista sąsiedztwa vs. zagnieżdżone zestawy:PostgreSQL który pokazuje szczegóły.

Chociaż mówimy o innych podejściach, warto wspomnieć również o bazie danych Oracle. Oracle ma również niestandardowe rozszerzenie CONNECT BY które sprawiają, że wyszukiwanie danych heirarchicznych jest bardzo łatwe i szybkie. Artykuł Quassnoi Lista sąsiedztwa a zestawy zagnieżdżone:Oracle ponownie obejmuje szczegóły wydajności. Zapytanie, którego potrzebujesz, aby uzyskać wszystkie dzieci, jest w tym przypadku niezwykle proste:

SELECT *
FROM yourtable
START WITH id = 42
CONNECT BY parent = PRIOR id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podział SQL używający 'nie istnieje' w mysql

  2. W MySQL funkcja CHAR() działa dziwnie

  3. Wybierz oddzielne wiersze z dwóch tabel, uporządkuj według daty

  4. Jak za pomocą mysqli napisać bezpieczne zapytanie SELECT, które ma zmienną liczbę wartości podanych przez użytkownika?

  5. Dostęp do ostatnio utworzonego wiersza w PHP/MySQL