1

我正在使用它来查询我在 c#.net mysql 连接中达到 20 的位置。这个查询需要永远执行,当我在 MySQL shell 中运行它时需要 3 分钟。所有其他查询运行良好。

string sqlQuery = "(SELECT TimeStamp, AVG(FwdHr), W FROM Meter_Data " + 
                    "WHERE TimeStamp Between " + 
                    (timeSt[0] - window).ToString() + 
                    " AND " + (timeSt[0] + window).ToString() + 
                    " AND DeviceID = '"+deviceId+"')";

for (int i = 1; i < timeSt.Count; i++)
{
    sqlQuery = sqlQuery+ " UNION (SELECT TimeStamp, AVG(FwdHr), W 
               FROM Meter_Data WHERE TimeStamp Between " + 
               (timeSt[i] - window).ToString() + " AND " +
               (timeSt[i] + window).ToString() + 
               " AND DeviceID = '" + deviceId + "')";  
}
4

1 回答 1

0

检查事项:

  1. 记录从 C# 代码执行的查询。您可能“认为”从 MySQL shell 执行相同的查询,但总有可能不是。
  2. 查看查询的查询计划,看看正在使用哪些索引等。您可能需要在 Timestamp 上创建一个索引,这可能会极大地提高性能。
于 2013-06-13T12:11:31.670 回答