/ / क्या सामान्य तालिका अभिव्यक्ति (CTE) या सबक्वेरी - sql, sql-server, sql-server-2008, tsql में डायनेमिक क्वेरी से लौटने वाली कुल पंक्तियों की गणना करने का कोई तरीका है

सामान्य तालिका अभिव्यक्ति (सीटीई) या सबक्वायरी - एसक्यूएल-सर्वर, एसक्यूएल-सर्वर -2008, tsql में गतिशील क्वेरी से वापस आने वाली पंक्तियों की कुल संख्या की गणना करने का कोई तरीका है

हम अपने डेटाबेस के अनुकूलन की प्रक्रिया में हैं।हमारे पास अधिकांश स्टोर प्रक्रिया है जो CTE का उपयोग करती है क्योंकि यह हमारी तालिका strucure के अनुसार हमें उच्च प्रदर्शन देती है। हमारे पास लगभग गतिशील क्वेरी है जो अलग-अलग स्थिति के अनुसार अलग-अलग परिणाम देती है। हम सीटीई में सभी डेटा रखते हैं, और स्थिति की जांच करते हैं, यह नहीं था समस्या लेकिन हमें कुल पंक्तियों की संख्या चाहिए जो प्रत्येक क्वेरी द्वारा लौटती हैं, यह गणना करने में बहुत समय लगता है। समकालीन तालिका या तालिका चर हमारे मामले में उपयुक्त नहीं है क्योंकि इसमें डेटा डालने में बहुत समय लगता है। हमारे पास निम्नलिखित के रूप में संरचना है

With t(fields) as
(select field1,field2.......
ROW_NUMBER() OVER (order by some column) as row...
from some table and lots of
inner n left joins
where some condition ),
rowTotal(RowTotal) as
(select max(row) from t)
select * from t,RowTotal
where condition for paging

लेकिन अगर मैंने इसे हटा दिया तो अधिकतम (पंक्ति) समय लग गयायह 100ms के भीतर डेटा लौटाता है। मैंने Coun (*), काउंट (SomeField) और कई अन्य काम किए, लेकिन इसमें बहुत समय लगा। मैंने कुछ MS में कुल पंक्तियों की पंक्तियाँ कैसे प्राप्त कीं, कोई भी कुल कार्य मेरे लिए काम नहीं करेगा। किसी भी मदद के लिए @@ rowcount.Thanks की तरह rowtotal की गणना करें।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप आंतरिक क्वेरी से पंक्तियों की कुल संख्या के बाद हैं, तो आप इसे अपने चयन का उपयोग करके एक कॉलम के रूप में जोड़ सकते हैं COUNT() तथा PARTITION BY().

With t(fields) as
(select COUNT(*) OVER (PARTITION BY 1) AS TotalRows,
field1,field2.......
ROW_NUMBER() OVER (order by some column) as row...
from some table ...

इससे आपको पहले कॉलम के रूप में "t" की कुल पंक्तियों की गिनती मिल जाएगी t

मुझे पता नहीं है कि यह सबसे तेज़ तरीका है जो आप चाहते हैं, लेकिन यह मेरे लिए 000 पर काम करता है लौटे रिकॉर्ड्स के लिए और अलग-अलग चुनिंदा प्रश्नों को रोकता है ताकि गिनती अलग से मिल सके।