c# - 减少 ASP.NET 中 MYSQL 的执行时间

标签 c# asp.net mysql database

我有一个与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/

相关文章:

c# - Visual Studio 2013 中的 ASP.NET 网站模板等效吗?

c# - ASP.NET 使用查询字符串从 URL 下载图像文件

asp.net - 以漂亮的布局显示记录

mysql - 如何在 FreeBSD 上检查 mysql 状态?

c# - 使电话连接到调制解调器振铃

c# - 动态创建的按钮,但为它们创建的事件未触发

C# Message.CreateMessage() Android/Java 等效项

c# - 在asp.net中回发后运行Javascript函数

mysql - MySQL 中的 INSERT..SELECT

mysql - 创建 MySQL 触发器时出现语法错误