Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल गिनती (*) प्रदर्शन

मिकेल एरिक्सन के पास एक अच्छी व्याख्या है कि पहली क्वेरी तेज़ क्यों है:

SQL सर्वर इसे इसमें अनुकूलित करता है:if exists(select * from BookChapters) . तो यह तालिका में सभी पंक्तियों को गिनने के बजाय एक पंक्ति की उपस्थिति की तलाश में जाता है।

अन्य दो प्रश्नों के लिए, SQL सर्वर निम्न नियम का उपयोग करेगा। SELECT COUNT(*) . जैसी क्वेरी करने के लिए , SQL सर्वर सबसे संकीर्णगैर-संकुल . का उपयोग करेगा पंक्तियों को गिनने के लिए index. यदि तालिका में कोई गैर-संकुल अनुक्रमणिका नहीं है, तो उसे तालिका को स्कैन करना होगा।

साथ ही, यदि आपकी तालिका में संकुल . है अनुक्रमणिका आप निम्न क्वेरी का उपयोग करके अपनी गिनती और भी तेज़ी से प्राप्त कर सकते हैं (इस साइट से उधार ली गई पंक्ति गणना तेज़ी से प्राप्त करें!)

--SQL Server 2005/2008
SELECT OBJECT_NAME(i.id) [Table_Name], i.rowcnt [Row_Count]
FROM sys.sysindexes i WITH (NOLOCK)
WHERE i.indid in (0,1)
ORDER BY i.rowcnt desc

--SQL Server 2000
SELECT OBJECT_NAME(i.id) [Table_Name], i.rows [Row_Count]
FROM sysindexes i (NOLOCK)
WHERE i.indid in (0,1)
ORDER BY i.rows desc

यह sysindexes सिस्टम टेबल का उपयोग करता है। अधिक जानकारी आप यहां SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2012

पा सकते हैं

यहाँ एक और लिंक है मेरा SELECT COUNT(*) इतना धीमा क्यों चल रहा है? दूसरे समाधान के साथ। यह तकनीक दिखाता है कि जब आप टेबल पर राइट क्लिक करते हैं और गुणों का चयन करते हैं तो Microsoft पंक्तियों की संख्या को जल्दी से प्रदर्शित करने के लिए उपयोग करता है।

select sum (spart.rows)
from sys.partitions spart
where spart.object_id = object_id(’YourTable’)
and spart.index_id < 2

आपको पता होना चाहिए कि यह बहुत जल्दी वापस आ जाता है चाहे आपके पास कितनी भी टेबल क्यों न हों।

यदि आप SQL 2000 का उपयोग कर रहे हैं तब भी आप संख्या प्राप्त करने के लिए sysindexes तालिका का उपयोग कर सकते हैं।

select max(ROWS)
from sysindexes
where id = object_id(’YourTable’)

SQL कितनी बार sysindexes तालिका को अपडेट करता है, इसके आधार पर यह संख्या थोड़ी दूर हो सकती है, लेकिन यह आमतौर पर सही (या कम से कम काफी करीब) है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005/2008:एक्सएमएल बनाम टेक्स्ट/वर्कर डेटा प्रकार

  2. SQL डेटाबेस को आसानी से पुनर्स्थापित करें - चरण दर चरण मार्गदर्शिका

  3. @@ DATEFIRST - SQL सर्वर में सप्ताह का पहला दिन प्राप्त करें

  4. SQL सर्वर में नंबर कैसे फॉर्मेट करें

  5. मैं SQL सर्वर क्वेरी कैश को कैसे साफ़ कर सकता हूँ?