PHP - Query MySql muy lenta

   
Vista:

Query MySql muy lenta

Publicado por cristopher (1 intervención) el 09/02/2013 00:07:21
Estoy trabajando con ADO PHP, y esta consulta se demora como 10 segundos...

es muy raro. cada vez que uso consultas con sobre 3 inner joins, tardan demasiado.
qué podrá ser?. Existe alguna forma de Contar los registros de una consulta sin usar COUNT, es decir, con alguna función nativa de php?.

$Sqlcontar = "SELECT COUNT(DISTINCT(tbl_aviso.aviso_id)) as re FROM tbl_aviso";


if($region != '0'){
$Sqlcontar .= " INNER JOIN tbl_region on tbl_aviso.reg_id = $region";
}

if($area_trabajo != '0'){
$Sqlcontar .= " INNER JOIN tbl_area_trabajo ON tbl_aviso.area_trabajo_id = $area_trabajo";
}

if($cargo != '0'){
$Sqlcontar .= " INNER JOIN tbl_cargo on tbl_aviso.car_id = $cargo";
}

if($jornada != '0'){
$Sqlcontar .= " INNER JOIN tbl_jornada on tbl_aviso.jornada_id = $jornada ";
}

if($rubro != '0'){
$Sqlcontar .= " INNER JOIN tbl_rubro on tbl_aviso.rub_id = $rubro";
}

$Sqlcontar .= " WHERE tbl_aviso.pla_id = 2 ";

if($palabraclave != '0'){
$Sqlcontar .= " AND tbl_aviso.aviso_titulo LIKE '%$palabraclave%'";
}

$oBD->query($conn, $RScontar, $Sqlcontar);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Query MySql muy lenta

Publicado por cristopher (1 intervención) el 09/02/2013 00:32:34
Bueno, encontré la solución... Si es que a algjuien le pasa algo similar.
la tardanza se debía a la mala relación que hacia.

INNER JOIN tbl_region on tbl_aviso.reg_id

Lo correcto es

INNER JOIN tbl_region on tbl_region .reg_id

**invocar la misma tabla en donde haces la relación,ya que, si invocas la PADRE, la consulta nuevamente se va a la otra tabla, lo que hace perder tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Query MySql muy lenta

Publicado por xve (5513 intervenciones) el 10/02/2013 11:04:04
Gracias por comentarlo Cristopher!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Query MySql muy lenta

Publicado por Guillermo (1 intervención) el 13/06/2013 23:15:29
El problema radica mis amigos no en PHP, Windows, IIS o APACHE sino en MYSQL al igual que muchos busqué y busque y no conseguía respuesta.
Reinstalaba todo… MYSQL, probé tanto con Apache como IIS, Probé distintas versiones de Windows (XP fue la más o menos aceptable, pero W7 y W8 la lentitud era inimaginable) incluso llegué a pensar en reprograma todo mi sistema en ASP.NET y SQL Server. Así de grave era este problema para mí.
Ya no hallaba que hacer hasta que conseguí esta URL: http://www.acumen-corp.com/Blog/tabid/298/entryid/92/Fix-php-mysql-is-VERY-slow.aspx hay que darle todo el mérito a este tipo. Que fue el que consiguió “el porqué del problema”
Todo es culpa de la resolución de nombres de MYSQL. Puedes ver la documentación de esto aquí. http://dev.mysql.com/doc/refman/5.0/en/host-cache.html

La solución “sencilla” como puede ser en casi todo los grandes problemas:
Vas buscar el archivo My.ini de Mysql y al final vas a agregar esto al final y luego reinicia:

#Don't cache host names.
skip-host-cache
#Don't resolve hostnames. All hostnames are IP's or 'localhost'.
skip-name-resolve

La respuesta de tu aplicación será ahora súper rápida, parecerá que te acabas de comprar un súper servidor.
Punto negativo de todo esto: ya no podrás conectarte a MYSQL a través de nombres de host sino solo de direcciones IP.
Saludos y suerte….
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Query MySql muy lenta

Publicado por xve (5513 intervenciones) el 14/06/2013 07:39:10
Muchas y muchas gracias Guillermo por esta explicación, de verdad muy agradecido!!!

Desconocía por completo este problema en la instalación de Windows.

Una pregunta, como instalaste MySQL? directamente con los instaladores de Mysql, o utilizaste algún paquete como Xamp o Wamp?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar