Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在CTE中获取Count()将导致表扫描_Sql_Sql Server_Common Table Expression - Fatal编程技术网

Sql 在CTE中获取Count()将导致表扫描

Sql 在CTE中获取Count()将导致表扫描,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,我有以下疑问: ;WITH CTE AS ( SELECT ROW_NUMBER() OVER ( ORDER BY RTT.DAYSTOWAIT DESC ) AS ROW ,COUNT(*) OVER () AS ROWCNT --... -- ADDITIONAL COLUMNS --... FROM TABLE1 T1 INNER JOIN TABLE2 T2 ON T1.OI

我有以下疑问:

;WITH CTE
AS (
    SELECT ROW_NUMBER() OVER (
            ORDER BY RTT.DAYSTOWAIT DESC
            ) AS ROW
        ,COUNT(*) OVER () AS ROWCNT
    --...
    -- ADDITIONAL COLUMNS
    --...
    FROM TABLE1 T1
    INNER JOIN TABLE2 T2 ON T1.OID = T2.OID
    INNER JOIN ORG ON T1.ORGOID = ORG.OID
    INNER JOIN EPI E ON E.OID = T1.EOID
        AND E.PKEY = T1.PKEY
        AND E.STATUS = 'A'
    INNER JOIN PATHWAY ON OID = EPI.PATHWAYOID
        AND PATHWAY.PARTKEY = T1.PARTKEY
        AND PATPATHWAY.STATUS = 'A'
    )
SELECT CTE.ROW
    ,CTE.ROWCNT
FROM CTE
使用Cte.RowCount选择Cte时,会导致表格扫描, 但是当我从select中删除“RowCount”列时,它工作得很好(seek)


是否有更有效的方法获取count()?

请添加表和执行计划的索引。是否尝试将
count(*)
移到构建CTE结果集的位置之外<代码>从CTE中选择CTE.ROW,COUNT(*)?是的,我尝试过,但仍会导致表格扫描