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

SQL सर्वर 2005 क्वेरी को धीमा करें

आपकी अनुक्रमणिका वास्तव में क्वेरी का समर्थन नहीं करती है क्योंकि क्वेरी प्रमुख कुंजी कॉलम का संदर्भ नहीं देती है। तो, उसे इस इंडेक्स के साथ या उसके बिना पूरी टेबल को स्कैन करना होगा। यदि आप इसे अक्सर चलाते हैं, तो आप इस डिलीट ऑपरेशन का समर्थन करने के लिए अकेले DataPointDate पर एक इंडेक्स पर विचार कर सकते हैं।

यदि DataPointID एक पहचान स्तंभ है, और DataPointDate क्रमिक रूप से दर्ज किया गया है, तो आप इस भिन्नता पर भी विचार कर सकते हैं:

DECLARE @maxID INT;

SELECT @maxID = MAX(DataPointID) 
  FROM dbo.tblTSS_DataCollection
  WHERE [DatapointDate] < DATEADD(D, -7, GETDATE());

DELETE dbo.tblTSS_DataCollection
  WHERE DataPointID <= @maxID;

एक और चीज जिसे आप करने पर विचार कर सकते हैं (यदि यह डिलीट है और स्कैन धीमेपन में योगदान नहीं दे रहा है) है (ए) यह सुनिश्चित करना कि आपके लॉग में डिलीट को समायोजित करने के लिए पर्याप्त जगह है, और आपको ऑटोग्रो के झुंड के साथ नहीं मार रहा है, और ( b) बैचों में कार्य करना:

BEGIN TRANSACTION;

SELECT 1;

WHILE @@ROWCOUNT > 0
BEGIN
  COMMIT TRANSACTION;

  DELETE TOP (1000) dbo.tblTSS_DataCollection WHERE ...
END

COMMIT TRANSACTION;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल में डेटाबेस-स्वतंत्र एसक्यूएल स्ट्रिंग कॉन्सटेनेशन

  2. समय अवधि का उपयोग करके समान मान की लगातार पंक्तियों को समूहित करें

  3. अपने आप में एक तालिका में शामिल हों

  4. एक वितरित XA लेनदेन में SQL सर्वर को सूचीबद्ध करना

  5. MySQL में MSSQL Row_Number () ओवर (ऑर्डर बाय)