我已经写了一个查询,我在这里获取记录以及总记录数。我有两种方法,但无法弄清楚哪一种更好,更便宜
首先是多个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结束时只运行一次?然后我认为使用第一种方法没有问题。
建议请!
答案 0 :(得分:0)
这种方法是将COUNT
与OVER
:
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)