Sql server 比较两个sql查询,以优化性能,但不会与结果混淆

Sql server 比较两个sql查询,以优化性能,但不会与结果混淆,sql-server,query-optimization,Sql Server,Query Optimization,我有两个查询,Q1是原始版本,Q2是Q1的新重新编写版本 但当运行sql跟踪时,我发现Q1总是比Q2有更高的cpu周期,但持续时间更短。 有人能解释一下可能的原因吗。多亏了在大多数情况下和平台上,您将受到IO限制,而不是CPU限制。这意味着磁盘的读/写速度与处理器速度相反,是一个限制因素 听起来您在修改后的查询中有一个更好的执行计划,它利用了并行性。这意味着它有多个线程同时在部分数据上运行,CPU利用率更高(这是一件好事)。没有更多信息,我怀疑任何人都能提供帮助。我唯一的想法是,Q2会花更多的时

我有两个查询,Q1是原始版本,Q2是Q1的新重新编写版本

但当运行sql跟踪时,我发现Q1总是比Q2有更高的cpu周期,但持续时间更短。
有人能解释一下可能的原因吗。多亏了

在大多数情况下和平台上,您将受到IO限制,而不是CPU限制。这意味着磁盘的读/写速度与处理器速度相反,是一个限制因素


听起来您在修改后的查询中有一个更好的执行计划,它利用了并行性。这意味着它有多个线程同时在部分数据上运行,CPU利用率更高(这是一件好事)。

没有更多信息,我怀疑任何人都能提供帮助。我唯一的想法是,Q2会花更多的时间处理磁盘,导致CPU减少,但持续时间更长。Q1可能有一个并行计划Q2可能有一个串行计划。我们所能做的就是根据您提供的信息进行猜测!Q1类似于从t1中选择t1.c1、t2.c1,其中t1.c2=t2.c2和Q2是用正确的连接重新写入的选择t1.c1、t2.c1从t1中选择t1.c2,t2.c1从t1内部连接t2在t1.c2=t2.c2上,实际查询有10个表以Q1格式连接,我将其修改为Q2中的连接,所以Q2更好?在cpu周期较少但执行时间较多的情况下,是否有其他参数来判断性能执行计划是比较的最佳方式。时间本身太依赖于其他因素(缓存、其他服务器活动等),无法作为衡量效率的主要指标。