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

SQL सर्वर की संख्या धीमी है

बहुत करीब अनुमानित (किसी भी इन-फ्लाइट लेनदेन को अनदेखा करना) होगा:

SELECT SUM(p.rows) FROM sys.partitions AS p
  INNER JOIN sys.tables AS t
  ON p.[object_id] = t.[object_id]
  INNER JOIN sys.schemas AS s
  ON s.[schema_id] = t.[schema_id]
  WHERE t.name = N'myTable'
  AND s.name = N'dbo'
  AND p.index_id IN (0,1);

यह COUNT(*) . की तुलना में बहुत तेज़, बहुत तेज़ी से वापस आएगा , और यदि आपकी तालिका पर्याप्त तेज़ी से बदल रही है, तो यह वास्तव में कोई कम सटीक नहीं है - यदि आपकी तालिका आपके COUNT (और ताले लिए गए) शुरू करने के बीच बदल गई है और जब इसे वापस कर दिया गया था (जब ताले जारी किए गए थे और सभी प्रतीक्षा लेखन लेनदेन अब टेबल पर लिखने की अनुमति दी गई थी), क्या यह इतना अधिक मूल्यवान है? मुझे ऐसा नहीं लगता।

यदि आपके पास उस तालिका का कुछ सबसेट है जिसे आप गिनना चाहते हैं (कहते हैं, WHERE some_column IS NULL ), आप उस कॉलम पर एक फ़िल्टर्ड इंडेक्स बना सकते हैं, और जहां क्लॉज एक तरह से या दूसरे की संरचना कर सकते हैं, इस पर निर्भर करता है कि यह अपवाद था या नियम (इसलिए छोटे सेट पर फ़िल्टर्ड इंडेक्स बनाएं)। तो इन दो इंडेक्स में से एक:

CREATE INDEX IAmTheException ON dbo.table(some_column)
  WHERE some_column IS NULL;

CREATE INDEX IAmTheRule ON dbo.table(some_column)
  WHERE some_column IS NOT NULL;

तब आप इसी तरह से गिनती प्राप्त कर सकते हैं:

SELECT SUM(p.rows) FROM sys.partitions AS p
  INNER JOIN sys.tables AS t
  ON p.[object_id] = t.[object_id]
  INNER JOIN sys.schemas AS s
  ON s.[schema_id] = t.[schema_id]
  INNER JOIN sys.indexes AS i
  ON p.index_id = i.index_id
  WHERE t.name = N'myTable'
  AND s.name = N'dbo'
  AND i.name = N'IAmTheException' -- or N'IAmTheRule'
  AND p.index_id IN (0,1);

और यदि आप इसके विपरीत जानना चाहते हैं, तो आप ऊपर दी गई पहली क्वेरी से घटा दें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL कथन निष्पादित करते समय फ़िल्टर करने से पहले स्केलर फ़ंक्शंस लागू किया जा सकता है?

  2. सम्मिलित पंक्ति की पीके गाइड प्राप्त करने का सबसे अच्छा तरीका

  3. SQL सर्वर में डेटाटाइम बनाम डेटाटाइमऑफ़सेट:क्या अंतर है?

  4. CSV फ़ाइल आयात करें त्रुटि:स्तंभ मान जिसमें स्तंभ परिसीमक शामिल है

  5. मौजूदा तालिका में प्राथमिक कुंजी के साथ कॉलम जोड़ना