0

我有一个表,它是 mysql 中相关的 GPS 应用程序。每当我从 asp.net 应用程序执行时,它都会显示胎儿错误。所以我决定在 mysql 中运行,执行 SP 需要 1 分钟以上(正好 70 秒)。是否可以解决问题。

更多信息:

表 1:server_gpsdata(它包含 gps 数据。它每 10 秒从 gps 设备锁定一次)。

select * from server_gpsdata SD 
INNER JOIN mstcab MC on MC.cabid= SD.cabid 
INNER JOIN server_tblstatus TS on TS.statusid= MC.CabStatusid 
INNER JOIN carmaster CM on CM.carid= MC.carid 
INNER JOIN cabtype CT on CT.cabtypeid= CM.sizeid 
where date(SD.cur_datetime) =current_date and 
      MC.Cabid not in (select D.cabid from trncabdriver D 
                       where date(D.logintime)=current_date) and 
      SD.gpsdataid in (select max(SGD.gpsdataid) from server_gpsdata SGD 
                       where date(SGD.cur_datetime)=current_date 
                       group by SGD.cabid);
4

1 回答 1

1

以下应该显示性能的显着改进:

select SD.*, MC.*, TS.*, CM.*, CT.* from 
(select max(SGD.gpsdataid) maxgpsdataid from server_gpsdata SGD 
 where date(SGD.cur_datetime)=current_date 
 group by SGD.cabid) SDM
INNER JOIN server_gpsdata SD ON SDM.maxgpsdataid = SD.gpsdataid
INNER JOIN mstcab MC on MC.cabid= SD.cabid 
INNER JOIN server_tblstatus TS on TS.statusid= MC.CabStatusid 
INNER JOIN carmaster CM on CM.carid= MC.carid 
INNER JOIN cabtype CT on CT.cabtypeid= CM.sizeid 
LEFT JOIN trncabdriver D ON MC.Cabid= D.Cabid AND date(D.logintime)=current_date
where D.Cabid IS NULL

请注意,现有查询和建议查询都返回 server_gpsdata、mstcab、server_tblstatus、carmaster 和 cabtype 表中的所有列 - 如果仅在查询中选择实际需要的列,则查询可能会执行得更好。

于 2013-03-18T13:25:33.943 回答