首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断SQL查询是否过于复杂?

如何判断SQL查询是否过于复杂?
EN

Stack Overflow用户
提问于 2012-12-03 20:37:53
回答 4查看 1K关注 0票数 4

在我的c#应用程序中,用户可以从SQL数据库构建动态报表。我需要警告用户,如果他们的DB查询太复杂,运行时间太长。

我正在使用microsoft-sql-server 2008。

我该怎么做呢?是否有任何统计算法来计算查询执行的运行时间?

EN

回答 4

Stack Overflow用户

发布于 2012-12-03 20:42:02

这几乎是不可能的。数据库根据表和索引统计信息计算执行计划,甚至数据库本身也无法预测运行时。

可能有一些指示,比如排序(和分组,这意味着排序)或几个连接,但在我看来,任何算法预测几乎是不可能的。

票数 1
EN

Stack Overflow用户

发布于 2012-12-03 20:48:32

您可以根据连接的数量和类型、order by和where标准以及所有受影响的表的行数等因素创建一个公式。

这取决于公式是如何构建的,这将在查询变得“繁重”时给出一个粗略的指示。

票数 0
EN

Stack Overflow用户

发布于 2012-12-03 20:55:24

正如其他人指出的那样,绝对的答案是你不能预先知道一个查询需要多长时间才能运行。

我能建议的最接近的方法是,在运行查询之前,尝试让对查询所涉及的内容有一个粗略的了解,那就是首先检索它的估计执行计划,并对其进行一些粗略的分析。

代码语言:javascript
复制
SET SHOWPLAN_XML ON
GO
SELECT TOP 100 *
FROM MyTable
GO

在执行计划XML中,有一些信息,比如估计的行数、优化器在选择执行计划之前是否超时、执行了什么操作(索引查找/扫描等)和大量其他内容(您确实需要深入研究执行计划)。

因此,在理论上,你可以尝试查看计划中的信息,以做出粗略/最佳猜测的判断。注意:这只是一个估计的执行计划,我不知道你能做出多高的准确度/判断力。

它没有给你时间,只是(也许)以某种方式来权衡查询的相对预期成本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13683440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档