我有一个从 .NET 应用程序到 SQL Server 数据库的查询,它似乎需要很长时间才能完成(5 分钟以上)。我在 c# 中创建了一个测试应用程序来尝试查看这么长时间的谈话内容(查询应该很快返回)。
当我通过添加元素来重构查询以查看哪个部分花费了这么长时间时,我最终实际上逐字地重构了查询,其中唯一的区别是原始查询中的空格和大小写差异。这种差异在大约 100 毫秒内返回了结果。
有人见过这个吗?我想知道我们的服务器(因为同事有同样的问题)或我们的计算机上是否有服务关闭。
提前感谢您对此的任何帮助。
下面的代码示例(末尾查询第一行的差异(fk_source 与 fk _Source):
//Original
OleDbCommand comm = new OleDbCommand("select min(ctc.serial_no) as MIN_INTERVAL from countstypecode ctc, source s, countstype ct, counts c where ct.value_id=c.value_id and s.c_id=ct.fk_source and " +
"ct.timeinterval=ctc.typename and ct.timeinterval in ('15min','1h','1day') and c.time_stamp >= CONVERT(datetime,'01-01-2008',105) and c.time_stamp < " +
"CONVERT(datetime,'01-01-2009',105) and s.c_id = '27038dbb19ed93db011a315297df3b7a'", dbConn);
//Rebuilt
OleDbCommand comm = new OleDbCommand("select min(ctc.serial_no) as MIN_INTERVAL from countstypecode ctc, source s, countstype ct, counts c where ct.value_id=c.value_id and s.c_id=ct.fk_Source and " +
"ct.timeinterval=ctc.typename and ct.timeinterval in ('15min','1h','1day') and c.time_stamp >= CONVERT(datetime,'01-01-2008',105) and c.time_stamp < " +
"CONVERT(datetime,'01-01-2009',105) and s.c_id='27038dbb19ed93db011a315297df3b7a'", dbConn);