我有一个与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);
最佳答案
以下内容应该显示性能的显着改进:
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 表中的所有列 - 如果在查询中仅选择实际需要的列,则查询可能会执行得更好。
关于c# - 减少 ASP.NET 中 MYSQL 的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476925/