Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consejo para mostrar tablas MySQL

Estas en el tema de Consejo para mostrar tablas MySQL en el foro de Mysql en Foros del Web. Que tal gente, necesito una ayuda o mejor dicho consejo, para que sea optimo el resultado. Estoy utilizando PHP para usar MySQL. Tengo una base ...
  #1 (permalink)  
Antiguo 02/05/2008, 15:19
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Consejo para mostrar tablas MySQL

Que tal gente, necesito una ayuda o mejor dicho consejo, para que sea optimo el resultado. Estoy utilizando PHP para usar MySQL.

Tengo una base de datos MySQL, que contiene 12 tablas.

tabla1, tabla2, tabla3, ..., tabla12


La tabla esta compuesta por campos, entre los cuales esta el ID que se auto-incrementa, una fecha y hora de creación.

Lo que necesito es Ordenar todas las tablas por fecha de creación, y hora, y ademas unirlas para poder mostrar registro por registro en orden descendente solo 20 registros.

El problema que me surge es que si dentro de cada tabla tengo 1000 registros, estar ordenando, 1000 registros x 12 tablas = 12000 registros que son un monton, y me preocupa que consuma demasiado al servidor, ya que en 1 consulta de 1 usuario, se generaria eso ordenamiento.

Ademas como hago una union de 12 tablas ?

Todo consejo es util !

Gracias
  #2 (permalink)  
Antiguo 02/05/2008, 23:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: con UNION ALL

Si lo que quieres es unir las 12 tablas y que, tras ordenar de manera descendente por los campos fecha y hora, te muestre sólo los 20 primeros, puedes hacer esto.

(SELECT fecha AS C1, hora AS C2 FROM tabla1)
UNION ALL
(SELECT FROM fecha, hora FROM tabla2)
UNION ALL
(SELECT FROM fecha, hora FROM tabla3)
UNION ALL
(SELECT FROM fecha, hora FROM tabla4)
//... hasta la tabla12

ORDER BY C1 DESC, C2 DESC LIMIT 20
  #3 (permalink)  
Antiguo 03/05/2008, 16:03
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Re: Consejo para mostrar tablas MySQL

Gracias por responder, no lo probe pero ahora lo hago, mi temor es que sobre carga le estoy dando a la base de datos en hacer esas uniones de tanto elementos, por eso estoy buscando la forma mas optima.
  #4 (permalink)  
Antiguo 03/05/2008, 16:32
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Consejo para mostrar tablas MySQL

Bien, lo que deberías hacer es un índice sobre los atributos mediante los cuales quieres ordenar los resultados (Si son llaves primarias o foráneas probablemente ya tienen índices creados), de esta manera cuando quieras acceder a las tablas, lo hará a través de los índices que ya están ordenados, por lo que la carga no sería mucha.

Lo otro que podés hacer, es obtener los 20 primeros resultados de cada tabla, y ordenarlos en una sola lista mediante código, y luego sacar los primeros 20 resultados de esa lista, obteniendo así los primeros 20 resultados ordenados de todas la tablas.

Para obtener mejoras mayores de rendimiento, deberías reconsiderar una mejor organización de los datos en las tablas.
  #5 (permalink)  
Antiguo 03/05/2008, 16:52
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Re: Consejo para mostrar tablas MySQL

Solo tengo como llave el ID, que es un numero entero que se va auto-incrementando, lo que puedo hacer es poner llaves a FECHA y HORA pero no quedarían como primarias. Si pongo como llaves la FECHA y HORA pero no son foreanas, es lo mismo ?

Si ordeno una tabla y luego obtengo los 20 primeros, y asi con las otras tablas también estaría ordenando muchos registros y seria muy parecido ?

Lo que tengo es que cada ID es nuevo por cada registro por lo tanto podria obtener los 20 ID ultimos de cada tabla y luego ordenarlos por FECHA y HORA por codigo PHP.
  #6 (permalink)  
Antiguo 03/05/2008, 18:06
 
Fecha de Ingreso: abril-2007
Mensajes: 77
Antigüedad: 17 años
Puntos: 0
Re: Consejo para mostrar tablas MySQL

Tengo un error en el codigo que no me hace la consulta.

Código:
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla1) UNION ALL
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla2) UNION ALL
(SELECT id, titulo, idioma, fecha, hora, categoria FROM tabla3)
WHERE MATCH(idioma) AGAINST ('Spanish')
ORDER BY fecha DESC, hora DESC LIMIT 20 ")
  #7 (permalink)  
Antiguo 08/09/2008, 15:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 6
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Consejo para mostrar tablas MySQL

Cita:
DESC LIMIT 20 ")
saca las comillas al lado del 20
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:46.