총 레코드 수뿐만 아니라 레코드를 가져 오는 쿼리를 작성했습니다. 나는 마음에 두 가지 방법을 가지고 있지만 하나SQL - 총 레코드 수에 대한 더 나은 접근 방식
;with allRecords as
(
-- query fetching all the records with many joins
),
recordsCount as
(
select count(*) as RecordsCount from allRecords
)
select * from allRecords, recordsCount
두 번째 방법, CTE 및 크로스를 사용하여
;with allRecords as
(
-- query fetching all the records with many joins
)
select *, c.totalRecords from allRecords
cross join (select count(*) as totalRecords from allRecords) c
I에 가입 여러 CTE의와
먼저 더 저렴 알아낼 수 없습니다 개인적으로 두 번째 접근법에서 아주 작은 성능을 느꼈습니다.
첫 번째 접근법에서는 두 번째 cte가 첫 번째 cte의 모든 레코드에 대해 매번 호출되거나 첫 번째 cte가 완료 될 때 한 번 실행됩니다. 그렇다면 첫 번째 접근법을 사용하는 데 문제가 없다고 생각합니다.
제안 사항!
확실하지 않은 질문을 완전히 이해했지만 분석 기능이 효과가 없을까요? – mcha
@mcha 처음에는 그만 사용했지만 시간이 많이 걸렸으므로 CTE의 –
으로 재미 있고 다른 방법으로 더 나은 성능을 얻으려면 성공 했습니까? – mcha