【问题标题】:Optimizing joined SQL CTEs -- Server 2008优化连接的 SQL CTE——Server 2008
【发布时间】:2013-09-01 01:56:42
【问题描述】:

我真的需要以下查询的帮助;使用 CTE 和连接执行需要 44 多秒,但是,当我运行单独的 select 语句时,每个语句只需要 1 秒。为什么我加入他们需要 44 秒?

WITH Z
     AS (SELECT GM,
                YQ,
                IG
         FROM   FN_qryFYQI(@pYQ1)),
     Y
     AS (SELECT GM,
                YQ,
                IG
         FROM   FN_qryFYQI(@pYQ2))
SELECT Z.GM,
       Z.IG AS IG1,
       Y.IG AS IG2
FROM   Y
       INNER JOIN Z
         ON Y.GM = Z.GM 

【问题讨论】:

  • FN_qryFYQI(@pYQ2) 是一个函数吗?你能发布它的定义吗?
  • 还有执行计划。
  • 以及相关的表定义,包括任何键和/或索引。
  • 你试过没有 CTE 吗?只需简单加入:SELECT Z.GM, Z.IG AS IG1, Y.IG AS IG2 FROM FN_qryFYQI(@pYQ2) Y INNER JOIN FN_qryFYQI(@pYQ1) Z ON Y.GM = Z.GM

标签: sql sql-server-2008 tsql join


【解决方案1】:

试试这个 -

SELECT  Z.GM
    ,   Z.IG AS IG1
    ,   Y.IG AS IG2
FROM FN_qryFYQI(@pYQ1) Y
JOIN (
    SELECT Z.GM, Z.IG
    FROM FN_qryFYQI(@pYQ2) Z
) Z ON Y.GM = Z.GM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2011-05-29
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多