sql >> Base de Datos >  >> RDS >> Mysql

Consulta MySQL lenta

Solo está solicitando dos columnas en su consulta, por lo que los índices podrían/deberían ir allí:

  • FechaHora
  • Tiempo de carga

Otra forma de acelerar su consulta podría ser dividir el campo DateTime en dos:fecha y hora.
De esta manera, la base de datos puede agruparse directamente en el campo de fecha en lugar de calcular DATE(...).

EDITADO:
Si prefiere usar un disparador, cree una nueva columna (FECHA) y llámela nueva fecha y prueba con esto (no puedo probarlo ahora para ver si es correcto):

CREATE TRIGGER upd_check BEFORE INSERT ON SpeedMonitor
FOR EACH ROW
BEGIN
  SET NEW.newdate=DATE(NEW.DateTime);
END

EDITADO DE NUEVO:
Acabo de crear una base de datos con la misma tabla speedmonitor llena con aproximadamente 900 000 registros.
Luego ejecuto la consulta SELECT newdate,AVG(LoadTime) loadtime FROM speedmonitor GROUP BY newdate ¡y tomó alrededor de 100 s! y TABLAS DE LIMPIEZA ), ¡la misma consulta tardó 0,6 s! tomó 0.9s.
Así que supongo que el índice en newdate no es bueno:elimínelo.
Voy a agregar tantos registros como pueda ahora y probaré dos consultas nuevamente.

EDICIÓN FINAL:
Eliminación de índices en las columnas newdate y DateTime, teniendo 8 millones de registros en la tabla de speedmonitor, aquí están los resultados:

  • seleccionar y agrupar en la nueva columna de fecha:7.5s
  • seleccionando y agrupando en el campo DATE(DateTime):13.7s

Creo que es una buena aceleración.
Se necesita tiempo para ejecutar la consulta dentro del indicador de comandos de mysql.