SQL - 更好的总记录计数方法

时间:2016-06-16 07:24:59

标签: sql sql-server tsql

我已经写了一个查询,我在这里获取记录以及总记录数。我有两种方法,但无法弄清楚哪一种更好,更便宜

首先是多个cte&#39>

socket.on('say to someone', function (id, msg)

第二种方法,使用cte和交叉连接

;with allRecords as 
(
   -- query fetching all the records with many joins
),
recordsCount as 
(
    select count(*) as RecordsCount from allRecords
)
select * from allRecords, recordsCount

我个人觉得第二种方法的表现非常好。

所以在第一种方法中,每次为第一个cte的所有记录调用第二个cte,还是在第一个cte结束时只运行一次?然后我认为使用第一种方法没有问题。

建议请!

2 个答案:

答案 0 :(得分:0)

这种方法是将COUNTOVER

一起使用
SELECT *, COUNT(*) OVER()
FROM --- rest of the query here

答案 1 :(得分:0)

创意-1

sp_MSforeachtable 'sp_spaceused "?"'

想法-2

sp_MSforeachtable 'select ''?'' Tablename, count(*) ''Rows'' from ?';

理念-3

SELECT object_name(id), rows
FROM sysindexes
WHERE indid IN (0, 1)