Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 02-may-2008, 15:19   #1 (permalink)
dieguito01 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2007
Mensajes: 77
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
dieguito01 está desconectado   Responder Citando
Antiguo 02-may-2008, 23:09   #2 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 813
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
jurena está desconectado   Responder Citando
Antiguo 03-may-2008, 16:03   #3 (permalink)
dieguito01 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2007
Mensajes: 77
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.
dieguito01 está desconectado   Responder Citando
Antiguo 03-may-2008, 16:32   #4 (permalink)
Colaborador
TolaWare tiene algunos puntos positivos de karma
 
Avatar de TolaWare
 
Fecha de Ingreso: julio-2005
Mensajes: 4.253
Enviar un mensaje por MSN a TolaWare
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.
TolaWare está desconectado   Responder Citando
Antiguo 03-may-2008, 16:52   #5 (permalink)
dieguito01 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2007
Mensajes: 77
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.
dieguito01 está desconectado   Responder Citando
Antiguo 03-may-2008, 18:06   #6 (permalink)
dieguito01 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2007
Mensajes: 77
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 ")
dieguito01 está desconectado   Responder Citando
Antiguo 08-sep-2008, 15:16   #7 (permalink)
gergaostil ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Respuesta: Consejo para mostrar tablas MySQL

Cita:
DESC LIMIT 20 ")
saca las comillas al lado del 20
gergaostil está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 5,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:19.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93