मैंने एक संग्रहित प्रक्रिया लिखी है, जिसे कल, आमतौर पर एक सेकंड के तहत पूरा किया जाता है। आज, इसमें लगभग 18 सेकंड लगते हैं। मैं कल भी समस्या में भाग गया, और यह ड्रॉपिंग और संग्रहीत प्रक्रिया को फिर से तैयार करके हल किया जाना प्रतीत होता था। आज, वह चाल काम नहीं कर रही है। :(एसक्यूएल सर्वर - संग्रहीत प्रक्रिया अचानक धीमी हो जाती है
दिलचस्प बात यह है कि अगर मैं संग्रहीत प्रक्रिया के शरीर को कॉपी करें और एक सीधा क्वेरी इसे जल्दी पूरा करता है के रूप में यह निष्पादित करें। यह तथ्य यह है कि यह एक संग्रहीत प्रक्रिया है कि उसे धीमा ...!
है प्रतीत हो रहा हैक्या कोई जानता है कि समस्या क्या हो सकती है? मैंने जवाबों की खोज की है, लेकिन अक्सर वे क्वेरी विश्लेषक के माध्यम से इसे चलाने की सलाह देते हैं, लेकिन मेरे पास यह नहीं है - मैं अब के लिए SQL Server 2008 एक्सप्रेस का उपयोग कर रहा हूं।
संग्रहित प्रक्रिया निम्नानुसार है;
ALTER PROCEDURE [dbo].[spGetPOIs] @lat1 float, @lon1 float, @lat2 float, @lon2 float, @minLOD tinyint, @maxLOD tinyint, @exact bit AS BEGIN -- Create the query rectangle as a polygon DECLARE @bounds geography; SET @bounds = dbo.fnGetRectangleGeographyFromLatLons(@lat1, @lon1, @lat2, @lon2); -- Perform the selection if (@exact = 0) BEGIN SELECT [ID], [Name], [Type], [Data], [MinLOD], [MaxLOD], [Location].[Lat] AS [Latitude], [Location].[Long] AS [Longitude], [SourceID] FROM [POIs] WHERE NOT ((@maxLOD [MaxLOD])) AND (@bounds.Filter([Location]) = 1) END ELSE BEGIN SELECT [ID], [Name], [Type], [Data], [MinLOD], [MaxLOD], [Location].[Lat] AS [Latitude], [Location].[Long] AS [Longitude], [SourceID] FROM [POIs] WHERE NOT ((@maxLOD [MaxLOD])) AND (@bounds.STIntersects([Location]) = 1) END END
'पीओआई' तालिका में मिनीलोड, मैक्सएलडी, और स्थान पर एक स्थानिक सूचकांक पर एक सूचकांक है।
यह अच्छी तरह से यह हो सकता है पाया। मैंने संग्रहीत प्रक्रिया को प्रत्येक कॉल के साथ पुन: संकलित करने के लिए बदल दिया और ऐसा लगता है कि (अब के लिए!) चीजों को काफी हद तक बढ़ा दिया है। धन्यवाद! क्या पुनर्मूल्यांकन और खराब क्वेरी योजनाओं से बचने का कोई तरीका है? – Barguast
नहीं। आप क्या कर सकते हैं संग्रहीत प्रक्रिया को डंप करें और गतिशील एसक्यूएल का उपयोग करें ... इसलिए क्वेरी योजना प्रत्येक कॉल को पुन: उत्पन्न करती है। संग्रहित प्रक्रियाओं के साथ यह एक ज्ञात मुद्दा है (सभी इसे समझ में नहीं आता है, केएम की तरह) - वे कभी-कभी वास्तव में खराब क्वेरी योजनाओं में बदल जाते हैं। – TomTom