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

Optimizar base de datos

Estas en el tema de Optimizar base de datos en el foro de Mysql en Foros del Web. Hola gente, los molesto por un sitio Web que hace un año más o menos está en línea: http://www.serviciosdecordoba.com He notado que últimamente está lento ...
  #1 (permalink)  
Antiguo 05/06/2012, 12:54
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 10 meses
Puntos: 6
Optimizar base de datos

Hola gente, los molesto por un sitio Web que hace un año más o menos está en línea: http://www.serviciosdecordoba.com He notado que últimamente está lento sobre todo la página Home. Hice una consulta con la gente del Hosting y me dieron unas respuestas que no comprendo del todo. A ver si me puede ayudar:

Los del Hosting me dijeron:
"la base de datos no se encuentra configurada
correctamente ya que las querys que ejecuta son procesadas por mas de 20 segundos
lo que produce una leve lentitud en el acceso"


¿Tienen idea a qué se refieren con "configurada correctamente"?.

Y también me dijeron esto:
"Ademas estas escribiendo en tablas temporales lo cual no es recomendable ya que
MySQL tarda unos segundos mas en procesar una querys que se ejecuta en una tabla
temporal"


No entiendo a qué se refieren con "tablas temporales".

Bueno agradeceré cualquier ayuda que alguien de este foro me pueda dar.
  #2 (permalink)  
Antiguo 06/06/2012, 00:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Optimizar base de datos

Como sabrás la querys no son únicas es decir se puede conseguir el mismo resultado de distintas formas. Habría que ver tus querys para saber si se pueden rescribir de tal forma que se optimice su ejecución, creando índices o forzando su uso.... sin ver la bbdd no se puede decir mucho mas. En cuanto a las tablas temporales, aun que no lo hagas tu el motor a veces se ve obligado a crearlas para solucionar determinadas querys, redefiniéndolas quizás se puede evitar....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 06/06/2012, 08:00
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 10 meses
Puntos: 6
Respuesta: Optimizar base de datos

Ok quimfv me ha servido tu respuesta, sobre todo la aclaración con respecto a las tablas temporales que no sabía que era así.
Buscaré información sobre cómo optimizar consultas, por el momento mejoré mucho el sitio modificando una consulta que se ejecutaba cada vez que se visitaba el Home y lo único que hacía era calcular una estadística sobre secciones más visitadas. La reprogramé para que se ejecute sólo 1 vez por día y mejoró muchísimo.

Agradezco mucho la información.
  #4 (permalink)  
Antiguo 13/06/2012, 17:00
 
Fecha de Ingreso: mayo-2003
Mensajes: 523
Antigüedad: 20 años, 10 meses
Puntos: 6
Respuesta: Optimizar base de datos

Estimados, sigo con este tema. Esta es la consulta que según dicen los del Hosting consume muchos recursos:

Código:
 $SQL = "SELECT t1.id, t1.titulo, t1.intro, t1.direccion, t1.telefono, t1.mail, t1.web, t1.mail, 
					t1.atencion, t1.imagen, t1.detalle, t1.titulo_galeria, 
					GROUP_CONCAT(DISTINCT t3.rubro ORDER BY t3.rubros_id SEPARATOR ', ') AS rubros, t4.zona, t5.usuario, activar_telefono, activar_link_web
				FROM comercios t1
				INNER JOIN comercios_rubros t2 ON(t2.comercios_id = t1.id)
				INNER JOIN rubros t3 ON(t3.id = t2.rubros_id 
					".$extr2."
				)
				INNER JOIN zonas t4 ON(t4.id = t1.zonas_id)
				INNER JOIN s_usuarios t5 ON(t1.mail=t5.email)
				WHERE 1 ".$ext." ".$extz." ".$wh."
				AND t1.estado = 'Y'
				GROUP BY t1.id
				ORDER BY 2 ASC
				LIMIT ".$desde.",".$max_show.";";
De las tablas sobre las que se ejecuta comercios y usuarios tienen 3000 registros, comercios_rubros 5000 y las otras son tablas con menos de 200 registros.
Les cuento que esta consulta no la hice yo, sino un programador anterior, pero no estoy seguro de si yo lograría escribirla de una forma más eficiente.
Pero al ejecutarle el sitio se pone lento y el Hosting se queja de los recursos que consume.

Bueno agradeceré cualquier ayuda con este tema.
  #5 (permalink)  
Antiguo 14/06/2012, 01:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Optimizar base de datos

Esa consulta tiene partes, no de datos si no de sintaxis que depende del valor de variables php, como no podemos saber su contenido dificilmente se te puede ayudar.

$SQL = "SELECT t1.id, t1.titulo, t1.intro, t1.direccion, t1.telefono, t1.mail, t1.web, t1.mail,
t1.atencion, t1.imagen, t1.detalle, t1.titulo_galeria,
GROUP_CONCAT(DISTINCT t3.rubro ORDER BY t3.rubros_id SEPARATOR ', ') AS rubros, t4.zona, t5.usuario, activar_telefono, activar_link_web
FROM comercios t1
INNER JOIN comercios_rubros t2 ON(t2.comercios_id = t1.id)
INNER JOIN rubros t3 ON(t3.id = t2.rubros_id
".$extr2."
)
INNER JOIN zonas t4 ON(t4.id = t1.zonas_id)
INNER JOIN s_usuarios t5 ON(t1.mail=t5.email)
WHERE 1 ".$ext." ".$extz." ".$wh."
AND t1.estado = 'Y'
GROUP BY t1.id
ORDER BY 2 ASC
LIMIT ".$desde.",".$max_show.";";


Por otro lado no tiene sentido ordenar por una constante

ORDER BY 2 ASC

esa linea sobraria, excepto que pueda referirse a la segunda columna (?).


GROUP_CONCAT(

+

GROUP BY t1.id

Sabiendo es resultado esperado quizas se podria mejorar....


13.2.8.3. Index Hint Syntax


Ana liza USE INDEX quizas forzando el uso de algun indice pude que mejore....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: sql, tabla
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 02:55.