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

Se puso lento el sitio, la BD tiene 12000reg. ¿que puede estar mal?

Estas en el tema de Se puso lento el sitio, la BD tiene 12000reg. ¿que puede estar mal? en el foro de Bases de Datos General en Foros del Web. Hola foreros tengo una consulta. miren, estoy haciendo un sitio web con letras de canciones en PHP y MySql, en la base de datos tengo ...
  #1 (permalink)  
Antiguo 03/08/2005, 15:53
 
Fecha de Ingreso: abril-2004
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
Se puso lento el sitio, la BD tiene 12000reg. ¿que puede estar mal?

Hola foreros

tengo una consulta.

miren, estoy haciendo un sitio web con letras de canciones en PHP y MySql,
en la base de datos tengo como 12000 registros. pero el sitio se pone muy lento para abrir la pagina principal (index.php) (¿por que será?), y eso que lo estoy probando en mi pc a traves de localhost.

en el index.php tengo una consulta que muestra los 10 últimos albumes que se han agregado a la base de datos. por lo cual hay una consulta así:

"Select * FROM tb_lyrics GROUP BY album ORDER BY fecha_insercion DESC"

Luego hago un bucle que muestra los 10 primeros registros.

además existen en index.php 3 juegos de registros que buscan:

- Los 10 artistas más leidos.
- Los 10 albumes mas leidos.
- Las 10 letras de canciones más leidas.

Yo tengo en la base de datos 1 sola tabla con los 12000 registros, dentro de los campos estan el nombre del artista, el album, la letra de la cancion y el numero de visitas. por lo cual debo hacer un GROUP BY ALBUM para determinar el album más leido, un GROUP BY ARTISTA para determinar el artista más leido, etc.

Mis dudas son las siguientes:

- ¿Debería agregar un "LIMIT 0,10" al final de la consulta para que carge en memoria solo los datos que voy a mostrar? ¿o la instruccion LIMIT no sirve para eso?.

-Sospecho que al hacer un SELECT *... carga los 12000 registros en la memoria por eso el pc se pone lento.

¿Estoy en lo correcto o no?


Me gustaría saber sus opiniones respecto a como hacer las consultas para aprovechar al máximo los recursos del PC y no despilfarrarlos.

¿conoce alguien un manual para optimizar los sitios y las consultas en funcion de mejorar la rapidez con que se abren las páginas del sitio?

Ojalá me puedan orientar
Gracias
__________________
Si el mundo es redondo ¿por que le pusieron planeta?
Entonces si hubiese sido plano le hubisen puesto "redondeta"
  #2 (permalink)  
Antiguo 03/08/2005, 19:04
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
yo primero añadiria un "limit" a la consulta. ten en cuenta que mysql_query carga todos los registros en memoria (http://php.grn.es/manual/en/function...ered-query.php).

seria "select ... from tabla order ... limit 0, 10".

declara indices en aquellas consultas que se usaran frecuentemente para buscar u ordenar campos.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 07/08/2005, 16:13
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
Yo haria 3 consultas, una para cada listado del tipo:
Select TOP 10 * FROM tb_lyrics GROUP BY album ORDER BY fecha_insercion DESC
Así sólo realizas 3 consultas pero no cargas los 12.000 registros
__________________
Un saludo,
Trucos
Videos
  #4 (permalink)  
Antiguo 07/08/2005, 19:34
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 6 meses
Puntos: 2
Cita:
Yo tengo en la base de datos 1 sola tabla con los 12000 registros, dentro de los campos estan el nombre del artista, el album, la letra de la cancion y el numero de visitas.
No podes cambiar esto??
Fijate que tenes mucha data redundante, cuantas veces tenes el nombre del artista?, cuando lo podrias tener una sola vez, lo ideal me parece seria tener una tabla con artistas, otra con discos y una ultima con las letras.

Tambien fijate de no usar "*" y poner el nombre de los campos que vayas a usar. Y si, el LIMIT (TOP es en MSSQL) deberia ayudar bastante.

Pero mi recomendacion es que dividas la info en varias tablas.

Saludos,
JmN
__________________
JmN
  #5 (permalink)  
Antiguo 07/08/2005, 19:44
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mex
Mensajes: 140
Antigüedad: 21 años, 5 meses
Puntos: 0
12,000 registros no es mucho para tu base de datos.

Create indices de acuerdo a las consultas(esto ya lo escribieron).

Optimiza tu tabla de vez en cuando.


Con esto debe operar decentemente.

Tengo una BD con 25 millones de líneas en MySQL y el desempeño es óptimo gracias a estos sencillos principios.
__________________
escribiendo mi libro de AJAX
  #6 (permalink)  
Antiguo 07/08/2005, 19:55
 
Fecha de Ingreso: abril-2004
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
..mmm gracias por sus opiniones, ahora funciona mucho mejor
__________________
Si el mundo es redondo ¿por que le pusieron planeta?
Entonces si hubiese sido plano le hubisen puesto "redondeta"
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




La zona horaria es GMT -6. Ahora son las 08:51.