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

Optimizar consultas

Estas en el tema de Optimizar consultas en el foro de Mysql en Foros del Web. Hola, En mi web el mysql esta consumiendo muchísimo los recurso del hosting. Y no se que tiene de mal las consultas :S.. No se ...
  #1 (permalink)  
Antiguo 27/10/2010, 12:49
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Optimizar consultas

Hola,
En mi web el mysql esta consumiendo muchísimo los recurso del hosting. Y no se que tiene de mal las consultas :S.. No se si estan bien optimizado o hay algo que ocupa mas recurso, o no se xD. Bueno estas son (todas estas se ejecutan por visita):

Código SQL:
Ver original
  1. SELECT c.* FROM clubs AS c
  2.                                                    WHERE c.id={$idc}

Código SQL:
Ver original
  1. SELECT c.* FROM clubs AS c
  2.                                                   WHERE c.idioma='{$idioma}'
  3.                                                    ORDER BY c.id DESC
  4.                                                    LIMIT 0,15

Código SQL:
Ver original
  1. SELECT c.* FROM clubs AS c
  2.                                                    WHERE c.idioma='{$idioma}'
  3.                                                    ORDER BY c.CONTA DESC
  4.                                                    LIMIT 0,15

Código SQL:
Ver original
  1. SELECT c.* FROM clubs AS c
  2.                                                   WHERE c.idioma='{$idioma}' AND c.time>(".(time()-(3600*24)).")
  3.                                                    ORDER BY c.CONTA DESC
  4.                                                    LIMIT 0,15
Código SQL:
Ver original
  1. SELECT c.* FROM clubs AS c
  2.                                                   WHERE c.idioma='{$idioma}' AND c.time>(".(time()-((3600*24)*7)).")
  3.                                                    ORDER BY c.CONTA DESC
  4.                                                    LIMIT 0,15

Y esta se ejecuta una vez por visita:

Código SQL:
Ver original
  1. UPDATE frases SET conta=conta+1 WHERE id={$idclub}

Gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #2 (permalink)  
Antiguo 27/10/2010, 14:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Optimizar consultas

imagino que tendrás indexado el campo idioma

¿Qué significa exactamente esto?
c.time>(".(time()-(3600*24)).")
  #3 (permalink)  
Antiguo 27/10/2010, 16:25
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Optimizar consultas

Como que indexado el campo idioma?? xD

Eso es para sacar el top del día, usando la funcion time (de php) actual y la guardada antes.
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 28/10/2010, 09:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Optimizar consultas

tú buscas esto (WHERE c.idioma='{$idioma}'
), y por lo que veo no es un número de id, sino el nombre del idioma, por ej., 'inglés'. Dinos cuál es la estructura de la tabla idiomas, y si relacionas con el campo ididioma (si es que existe algo parecido).


Tampoco entiendo que es el top del día, qué es lo que quieres buscar exactamente, parece que buscaras que la fecha time fuera 24 horas anterior a lo que tienes en un campo llamado time (ese nombre es un nombre reservado y ningún campo debería llamarse así: es un tipo de campo y una función para extraer la hora de una fecha hora), y
c.time>(".(time()-(3600*24)).")

yo no lo entiendo: parece como si dijeses que el campo que tú llamas time de la tabla clubs debe tener una fecha mayor que restarle 24 horas en segundos a aplicar la función time a nada, es decir, a extraer nada de nada.
Explica mejor lo que tienes y yo te aconsejaría que cambiaras el nombre de ese campo al que llamas time por timeclub o algo así.

Última edición por jurena; 28/10/2010 a las 10:01
  #5 (permalink)  
Antiguo 28/10/2010, 12:05
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Optimizar consultas

Esta es la tabla:
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `clubs` (
  2.   `id` INT(100) NOT NULL AUTO_INCREMENT,
  3.   `name` VARCHAR(400) NOT NULL,
  4.   `idioma` VARCHAR(2) NOT NULL,
  5.   `ip` VARCHAR(100) NOT NULL,
  6.   `time` INT(10) NOT NULL,
  7.   `conta` INT(10) NOT NULL,
  8.   `uid` VARCHAR(100) NOT NULL,
  9.   PRIMARY KEY  (`id`)
  10. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=476582 ;

Es necesario cambiar time por otro? :S.. Puede ser que por eso esta consumiendo muchos recursos?

Si para eso mismo sirve el top, buscar los clubs con la fecha time (en segundos) sea inferior a la de la bd.
__________________
Half Music - www.halfmusic.com

Etiquetas: Ninguno
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 16:30.