Ver Mensaje Individual
  #14 (permalink)  
Antiguo 04/10/2014, 16:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Cómo indexar la base de datos

Cita:
Una consulta, de las más complejas que hay en la web y que tarda mucho es la siguiente:
La consulta es "compleja" porque está basada en una tabla sin normalizar. De allí que necesites hacer cosas normalmente inexistentes.
Para mantener la base sin tocar, y tratar de hacerla más eficiente, hay que forzar el uso de ciertas funciones que no serían necesarias en tablas bien definidas.
Esto sería un acercamiento:
Código MySQL:
Ver original
  1.     un . *,
  2.     es.titulo,
  3.     es.descripcion,
  4.     po.nombre_poblacion,
  5.     ti.nombre_tipo_ca,
  6.     op.operacion_tipo_ca
  7.     t_un as un,
  8.     t_ca as es,
  9.     t_poblacion as po,
  10.     t_tipo as ti,
  11.     t_operacion as op
  12.     un.id_piso = es.id_piso
  13.         AND un.poblacion = po.id_poblacion
  14.         AND un.tipo = ti.id_tipo
  15.         AND un.operacion = op.id_operacion
  16.         AND FIND_IN_SET((SELECT CONCAT(first, ', ', second, ', ', third, ', ', forth, ', ', fifth, ', ', sixth)
  17.                 FROM t_destacados
  18.                 WHERE id_cat = 3), un.referencia )
  19.  
  20. LIMIT 0 , 6

REspecto a la segunda, el sólo hecho de que estés definiendo los nombres de las tablas dinámicamente de esa forma, me habla de problemas de diseño mayores aún. Por otro lado, no nos sirve que postees código de programación (cosa que desde ya es OFF TOPIC), sino que en todo caso necesitaríamos que nos postearas la sentencia como finalmente queda creada, es decir lo que MySQL realmente recibe.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)