我有一些复杂的查询(只选择许多嵌套连接和子查询) 我在SQL Profiler中注意到,当ADO从.NET应用程序执行它时需要30秒才能完成并执行129次写入(???)。
当我在SQL Server Management Studio中执行相同的查询(从Profiler复制)时,它只需要1.2秒和0次写入(正确)。
您知道为什么根据执行方法有如此不同的性能?
为什么select会对DB进行写入?
答案 0 :(得分:1)
可以根据运行的位置对查询进行不同的优化。在运行存储过程与SSMS中的proc内部的实际查询时,我的情况相同。不同之处在于,一个查询正在使用某些JOIN提示进行优化,另一个查询不会对性能产生巨大影响。
您可能只需要手动向查询添加join hint。在没有看到查询的情况下,我可以“告诉您需要进行哪些更改,但尝试在SSMS中运行查询,然后查看执行计划。”
答案 1 :(得分:0)
此时间显示数据已缓冲,并导致该复杂行为。