![]() |
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 |
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 |
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. |
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. |
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. |
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 |
Respuesta: Consejo para mostrar tablas MySQL Cita:
|
| La zona horaria es GMT -6. Ahora son las 07:02. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.