使用 ? 时,Excel 中的 SQL 查询需要更长的时间。获取与查询中指定的值不同的单元格值
我编写了 SQL Server 数据库的 Excel 查询来显示复杂视图的结果。该视图对多个记录少于 10K 的表使用联接,返回约 620 行,执行时间为 1-4 秒。总是。添加 WHERE 子句以将查找的 ID 限制为特定值,并根据查找的 ID 选择 1 到 100 行之间的行,并且执行时间始终不到 1 秒。
但是,修改 WHERE 子句以使用 ID = ?,并将其指向单元格。现在,如果选择的行数少于 30 行,则查询需要执行 5-30 秒;如果选择 30-50 行,则需要 2-4 分钟;如果选择 70-100 行,则需要 10-15 分钟;如果选择更多行,则会超时。这些时间是一致的。
如果使用 请求单元格,为什么 Excel 查询需要更长的时间?参数而不是给定值?为什么小查询完成得很快,大一点的查询需要更长的时间,而“大”查询则需要这么长时间?
I've written an Excel query of a SQL Server database to display results from a complex view. The view uses a join on several tables of less than 10K records, returns about 620 rows and takes 1-4 seconds to execute. Always. Add a WHERE clause to limit the ID sought to a specific value, and it selects between 1 and 100 rows, depending on the ID sought, and it always executes in less than 1 second.
However, modify the WHERE clause to use ID = ?, and point it at a cell. Now the query takes 5-30 seconds to execute if less than 30 rows are selected, 2-4 minutes if 30-50 rows are selected, 10-15 minutes if 70-100 rows are selected, and times out if more. These times are consistent.
Why does an Excel query take longer if a cell is requested using a ? parameter rather than a given value? And why do small queries finish fast, a little larger take longer, and "large" queries take so long?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可能是“参数嗅探”问题。 添加以下行:
尝试在 SQL 查询末尾
。这里有一篇文章解释了什么是参数嗅探: http://blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx
This could be a 'parameter sniffing' problem. Try including the line:
at the end of your SQL query.
There is an article here explaining what parameter sniffing is: http://blogs.technet.com/b/mdegre/archive/2012/03/19/what-is-parameter-sniffing.aspx