मेरे पास एक संग्रहीत कार्यविधि है जो एक अनुक्रमणिका के माध्यम से अनुक्रमित दृश्य से परिणाम देता है। आमतौर पर, यह तेजी से चलता है (~ 10ms), कभी-कभी यह 8 सेकंड तक चल सकता है।
यहां एक उदाहरण यादृच्छिक निष्पादन है (ध्यान दें: यह एक धीमा नहीं है, लेकिन क्वेरी पाठ समान मूल्य से अलग है):
declare @p2 dbo.IdentityType
insert into @p2 values(5710955)
insert into @p2 values(5710896)
insert into @p2 values(5710678)
insert into @p2 values(5710871)
insert into @p2 values(5711103)
insert into @p2 values(6215197)
insert into @p2 values(5710780)
exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2
यहाँ SPROC है:
ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus]
@LocationIds IdentityType READONLY,
@StatusType TINYINT
AS
BEGIN
SET NOCOUNT ON;
SELECT -- lots of fields
FROM [dbo].[ListingSearchView][a] WITH (NOEXPAND)
INNER JOIN @LocationIds [b] ON [a].[LocationId] = [b].[Id]
WHERE [a].[StatusType] = @statusType
OPTION (RECOMPILE);
(नोट: मैंने OPTION (RECOMPILE)
कुछ सलाह के बाद हाल ही में संकेत जोड़ा है , लेकिन यह मदद नहीं की है।
यहां कवरिंग इंडेक्स (ध्यान दें: दृश्य में एक क्लस्टर इंडेक्स भी है ListingId
, जो अद्वितीय है)
CREATE NONCLUSTERED INDEX [IX_ListingSearchView_ForAPI] ON [dbo].[ListingSearchView]
(
[LocationId] ASC,
[StatusType] ASC
)
INCLUDE ( -- all the fields in the query) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
मैंने शोपलेन एक्सएमएल आँकड़ों के साथ एक प्रोफाइलर का पता लगाया।
यहां एक धीमी गति (6 सेकंड), और प्रासंगिक योजना है:
जैसा मैं उम्मीद करता हूं, वैसा ही दिखता है, और क्वेरी तेज होने पर भी यही योजना है।
यहाँ योजना के महँगे हिस्से पर ज़ूम इन करें, अगर इससे मदद मिलती है:
यहाँ दृश्य / समर्थन तालिका का पूर्ण स्कीमा है, यदि यह मदद करता है: https://pastebin.com/wh1sRcbQ
टिप्पणियाँ:
- इंडेक्स को डीफ़्रैग्ड किया जाएगा, आज तक के आंकड़े।
- मूल रूप से क्वेरी दृश्य के विरुद्ध इनलाइन थी, लेकिन मैंने कोशिश करने और स्थिर करने में मदद करने के लिए SPROC में स्थानांतरित किया। मदद नहीं की है।
WITH OPTION (RECOMPILE);
संकेत जोड़ना (काम नहीं किया, इसलिए पैरामीटर सूँघना नहीं हो सकता?)- सिस्टम में अन्य प्रश्न भी कभी-कभी धीमी गति से चलते हैं, और उनकी योजना में भी कोई स्पष्ट मुद्दे नहीं होते हैं।
- ताला लगा सकता है? यकीन नहीं है कि कैसे पुष्टि करें।
मैं आगे क्या कोशिश कर सकता है पर कोई विचार?
धन्यवाद