sql >> Base de Datos >  >> RDS >> Mysql

MySQL:¿el mejor método para manejar estos datos jerárquicos?

Quassnoi ha realizado algunas pruebas de rendimiento en el modelo de conjuntos anidados y el modelo de lista de adyacencia y ha documentado los resultados y las recomendaciones en su entrada de blog Lista de adyacencia frente a conjuntos anidados:MySQL . El resumen ejecutivo es:

  • Los conjuntos anidados son más rápidos para obtener todos los nodos secundarios o todos los nodos principales.
  • Los conjuntos anidados son una mala idea si necesita actualizar la tabla con frecuencia.

Esta es la conclusión de su artículo:

El resto del artículo muestra cómo definir la tabla, implementar las consultas y brinda medidas de rendimiento. El uso del índice espacial es una idea inteligente para mejorar el rendimiento del modelo de conjunto anidado que podría ser nuevo para usted.

Si también está considerando enfoques sin MySQL, es posible que desee consultar PostgreSQL que es otra base de datos gratuita y de código abierto. PostgreSQL admite consultas recursivas en forma de expresiones de tablas comunes recursivas lo que facilita la consulta de datos jerárquicos que en MySQL y también brinda un mejor rendimiento. Quassnoi también ha escrito un artículo Lista de adyacencia vs. conjuntos anidados:PostgreSQL que muestra los detalles.

Si bien estamos hablando de buscar otros enfoques, también vale la pena mencionar la base de datos de Oracle. Oracle también tiene una extensión personalizada CONNECT BY lo que hace que la consulta de datos jerárquicos sea muy fácil y rápida. Artículo de Quassnoi Lista de adyacencia frente a conjuntos anidados:Oracle nuevamente cubre los detalles de rendimiento. La consulta que necesita para obtener todos los niños es extremadamente simple en este caso:

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