sql >> Databáze >  >> RDS >> Mysql

MySQL – nejlepší metoda pro zpracování těchto hierarchických dat?

Quassnoi provedl některé testy výkonu na modelu vnořených sad a modelu seznamu sousedství a zdokumentoval výsledky a doporučení ve svém blogovém příspěvku Seznam sousedství vs. vnořené sady:MySQL . Shrnutí je:

  • Vnořené sady jsou rychlejší pro načítání všech podřízených uzlů nebo všech nadřazených uzlů.
  • Vnořené sady jsou špatný nápad, pokud často potřebujete aktualizovat tabulku.

Zde je závěr z jeho článku:

Zbytek článku ukazuje, jak definovat tabulku, implementovat dotazy a poskytuje měření výkonu. Použití prostorového indexu je chytrý nápad, jak zlepšit výkon modelu vnořené sady, který pro vás může být nový.

Pokud také zvažujete přístupy bez MySQL, možná byste se měli podívat na PostgreSQL což je další bezplatná a open-source databáze. PostgreSQL podporuje rekurzivní dotazy ve formě rekurzivních běžných tabulkových výrazů které usnadňují dotazování na heirarchická data než v MySQL a také poskytují lepší výkon. Quassnoi také napsal článek Adjacency list vs. vnořené sady:PostgreSQL který ukazuje podrobnosti.

Když už mluvíme o pohledu na jiné přístupy, za zmínku stojí také databáze Oracle. Oracle má také vlastní rozšíření CONNECT BY díky kterým je dotazování na heirarchická data velmi snadné a rychlé. Quassnoiův článek Seznam sousedství vs. vnořené sady:Oracle opět pokrývá detaily výkonu. Dotaz, který potřebujete k získání všech dětí, je v tomto případě extrémně jednoduchý:

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


  1. Aktualizujte data aktivity ze služby, když je pozastavena

  2. DROP INDEX MySQL

  3. PHP PDO připravené výpisy

  4. Hierarchické dotazy v MySQL