Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2012, 08:59
miche23
 
Fecha de Ingreso: febrero-2010
Ubicación: La Habana,Cuba
Mensajes: 89
Antigüedad: 14 años, 2 meses
Puntos: 1
Consulta group_concat

Hola, tengo una tabla que esta relacionada con otras 5 tablas con una relacion many to many y quiero mostrar en los campos e la tabla principal los campos de las tablas adyacentes separados por comas; esto lo he logrado de la siguiente forma
Código:
select
	film.film_id,
	film.title,
	GROUP_CONCAT(distinct category.name SEPARATOR ',') as categoria,
	GROUP_CONCAT(distinct actor.fullname SEPARATOR ',') as actor
from 
	film
join film_category on film_category.film_id = film.film_id
join category on category.category_id = film_category.category_id
join film_actor on film_actor.film_id = film.film_id
join actor on actor.actor_id = film_actor.actor_id
group by film.film_id
Esta consulta realmente no me muestra los 999 registros de film sino solo 890 tardando 1 seg y 456 miliseg. Para mostrar todos los registros le agregao al join el left quedandome:
Código:
select
	film.film_id,
	film.title,
	GROUP_CONCAT(distinct category.name SEPARATOR ',') as categoria,
	GROUP_CONCAT(distinct actor.fullname SEPARATOR ',') as actor
from 
	film
left join film_category on film_category.film_id = film.film_id
left join category on category.category_id = film_category.category_id
left join film_actor on film_actor.film_id = film.film_id
left join actor on actor.actor_id = film_actor.actor_id
group by film.film_id
De esta forma me devuelve los 999 registros pero la consulta tarda 21 seg.
Estaba pensando en agregar las tablas adyacentes en la tabla principal, cosa que no me parece buena practica en el diseño de bases de datos y asi la consulta me demora 60 miliseg.
Entonces tengo el dilema de cambiar rendimiento por buenas practicas y quiciera que me recomendaran segun sus espericias que hacer pues varias personas se conectaran a mi bd con conexiones no muy buenas.
Bueno les agradezco de antemano.