【发布时间】:2013-06-09 19:17:15
【问题描述】:
我正在使用它来查询我在 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 + "')";
}
【问题讨论】:
-
Meter_Data表的大概大小是多少?timeSt列表中有多少项? -
... in mysql shell it takes 3 mins ...-uh 在 MySQL shell 中运行查询时存在多少个联合?您绝对确定您正在运行相同的查询吗? -
表联合中的数百万条记录只有 6 或 7 条
-
我认为它的mysql问题运行太慢了。
-
就性能而言,如果没有联合查询,您可能会有更好的运气。将其替换为“and deviceid in (list of numbers)”
标签: c# asp.net mysql sql database