SQL Query在SSMS中占用不到1秒,在代码中永远占用不到1秒

时间:2013-04-10 08:02:41

标签: sql sql-server

我正在针对一个相当大的表运行此查询(我想,大约150-200,000行):

select count(Distinct(eti.Email)) FROM table1 eti 
LEFT OUTER JOIN table2 ti on ti.Email = eti.Email and ti.SiteId = eti.Site_Id 
WHERE eti.Site_Id=1

在SMMS(SQL Server Management Studio)中,执行时间不到1秒,但是当我尝试从我的ASP.NET站点执行时,它会超时。

我正在使用PetaPoco获取“引擎盖下”执行此代码的数据:

using (var cmd = CreateCommand(_sharedConnection, sql, args))
{
    object val = cmd.ExecuteScalar();
    OnExecutedCommand(cmd);
    return (T)Convert.ChangeType(val, typeof(T));
}

我一直在阅读SSMS在执行查询时有“特殊设置”吗?我真的需要启动并运行。

连接中的“MARS”设置是否会对此产生任何影响?我如何调试并找到问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您的帮助!

我终于找到了这个问题(这有点令人尴尬)...我在msdn论坛上发现这个关于sp_executesql缓慢的博客问题: 和Dan Guzman是SQL Server MVP的答案:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/3cb08860-49a0-432a-8605-0af6b374dded/

  

另一个可能的问题是参数和列数据类型之间的数据类型不匹配,从而导致不可分析的表达式和错误的计划。如果您需要进一步的帮助,请发布您的查询和表格DDL。

所以我加倍检查,结果表明table2将Email和SiteId字段设置为“Nullable”,将它们更改为匹配table1修复了问题。