MySQL - Consulta Mysql muy lenta

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Arturo (5 intervenciones) el 08/11/2020 15:35:35
Tengo 3 tablas. Una con datos de equipos, otra con datos de torneos y otra con clasificaciones. Quiero poner todos los equipos indicando cuantas veces participó, su mejor clasificación y cuantas veces ganó (y segundo y tercero aunque eso lo quité para simplificar porque repito la subconsulta) en un torneo, ordenado por las veces que ganó.

Tengo esta consulta:

1
2
3
4
5
6
7
8
9
10
SELECT a.codeq, COUNT(a.codeq) AS Total, Min(a.puesto) As MinP,
 
(SELECT COUNT(b.puesto) from CLSM as b, TORM
where b.codelo = a.codeq and TORM.Idtor=b.Idtor and b.puesto=1 and TORM.nombre='$torneo'
group by b.puesto order by b.puesto asc limit 1) as Victorias
 
FROM CLSM as a, TORM
WHERE TORM.idtor=a.idtor AND TORM.nombre = '$torneo'
GROUP BY a.codeq
ORDER BY Victorias desc, MinP asc, Total desc

Lo calcula bien pero es muy lenta. Supongo que habrá alguna opción mejor para conseguir el mismo resultado.
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
Imágen de perfil de joel
Val: 650
Plata
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por joel (231 intervenciones) el 08/11/2020 19:23:10
Hola Arturo, la verdad es que viendo únicamente la consulta, no te se decir porque va lenta...

Cuantos registros tienen las tablas? que indices hay creados?
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
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Arturo (5 intervenciones) el 08/11/2020 19:30:45
La tabla de clasificaciones (CLSM) tiene como indice principal id y tiene 29.000 registros.
La tabla de torneos (TORM) tiene como indice principal idtor y tiene 1200 registros.

El id de los equipos codeq es texto en vez de número, ¿puede influir eso?
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 joel
Val: 650
Plata
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por joel (231 intervenciones) el 08/11/2020 20:23:50
Son muy pocos registros como para que te vaya lento, pero el campo id no debería ser texto!!!

Y los indices??
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
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Arturo (5 intervenciones) el 08/11/2020 20:29:07
Los indices si son integer.
Modifiqué los codeq a número para ponerlo también como integer.
Parece que va un poco más rápido aunque a veces va más o menos bien: 2-3 segundos y otras veces tarda 15 segundos. No se si será culpa del servidor o de la consulta.
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
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Arturo (5 intervenciones) el 09/11/2020 08:43:34
Table: CLSM
Non_unique: 0
Key_name: PRIMARY
Column_name: Id
Index_type: BTREE

En las otras tablas lo mismo, TORM es idtor y JUGM es es codeq, con las mismas caracterísitcas.
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 Joel
Val: 650
Plata
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Joel (231 intervenciones) el 09/11/2020 15:36:44
Pues te faltan los indices... por eso se demoran en ejecutarse las consultas... crea los indices adecuados y la consulta te sera instantánea!!
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
sin imagen de perfil
Val: 15
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta Mysql muy lenta

Publicado por Arturo (5 intervenciones) el 10/11/2020 20:37:09
Yo pensaba que lo de los índices era únicamente poner la clave primaria.
Añadí los índices y ahora si va rápido.

Muchas gracias por los consejos.
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