Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL - Най-добрият метод за обработка на тези йерархични данни?

Quassnoi проведе някои тестове за производителност на модела на вложени набори и модела на списъка на съседство и документира резултатите и препоръките в публикацията си в блога Списък на съседство спрямо вложени набори:MySQL . Резюмето е:

  • Вложените набори са по-бързи за извличане на всички дъщерни възли или всички родителски възли.
  • Вложените набори е лоша идея, ако често трябва да актуализирате таблицата.

Ето заключението от неговата статия:

Останалата част от статията показва как да дефинирате таблицата, да прилагате заявките и да дава измервания на производителността. Използването на пространствения индекс е хитра идея за подобряване на производителността на модела на вложен набор, който може да е нов за вас.

Ако обмисляте и подходи без MySQL, тогава може да искате да разгледате PostgreSQL което е друга безплатна база данни с отворен код. PostgreSQL поддържа рекурсивни заявки под формата на рекурсивни изрази за обща таблица които правят заявките за иерархични данни по-лесни, отколкото в MySQL и също така дават по-добра производителност. Quassnoi също е написал статия Списък на съседство срещу. вложени набори:PostgreSQL което показва подробностите.

Докато говорим за разглеждане на други подходи, базата данни на Oracle също заслужава да се спомене. Oracle също има персонализирано разширение CONNECT BY които правят запитването на иерархични данни много лесно и бързо. Статията на Quassnoi Списък на съседство спрямо вложени набори:Oracle отново обхваща детайлите за изпълнение. Заявката, от която се нуждаете, за да получите всички деца, е изключително проста в този случай:

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. Как да преименувате MySQL база данни

  2. Разбиране на pdo mysql транзакции

  3. MySQL Вмъкване и присъединяване

  4. Дата и час срещу дата и час Mysql

  5. MySQL позволява ли създаване на база данни с точка?