क्‍लस्‍डर्ड इंडेक्स इंसर्ट में मेरे विभाजन के परिणाम को हटाने का प्रदर्शन क्यों करता है?


9

मेरे पास एक विभाजन दृश्य है जिसमें नीचे सम्मिलित ट्रिगर (गरीब आदमी विभाजन) है। जब मैं एक DELETE करता हूं, तो मुझे नीचे क्वेरी योजना मिलती है:

delete from factproductprice where pricedate = '20170725'

यहां छवि विवरण दर्ज करें

दृश्य पर ट्रिगर:

ALTER TRIGGER [dbo].[factProductPriceDelete] ON [dbo].[FactProductPrice]
INSTEAD OF DELETE AS
BEGIN
  IF @@ROWCOUNT = 0 RETURN;

  DECLARE @PriceDate DATE
  SELECT @PriceDate = CAST(PriceDate AS DATE) FROM DELETED
  IF @PriceDate BETWEEN '20140101' AND '20141231'
  BEGIN
    DELETE FROM dbo.FactProductPrice2014
    WHERE ProductId IN (SELECT ProductId FROM DELETED) AND SalesPriceSchemeId IN (SELECT SalesPriceSchemeId FROM DELETED) AND PriceDate IN (SELECT PriceDate FROM DELETED) 
  END
  IF @PriceDate BETWEEN '20150101' AND '20151231'
  BEGIN
    DELETE FROM dbo.FactProductPrice2015
    WHERE ProductId IN (SELECT ProductId FROM DELETED) AND SalesPriceSchemeId IN (SELECT SalesPriceSchemeId FROM DELETED) AND PriceDate IN (SELECT PriceDate FROM DELETED) 
  END
  IF @PriceDate BETWEEN '20160101' AND '20161231'

.... आदि

जवाबों:


11

INSTEAD OF ट्रिगर पूरी तरह से ट्रिगर कार्रवाई को प्रतिस्थापित करते हैं।

डाला और नष्ट कर दिया छद्म टेबल परिवर्तन है कि होगा किए गए हैं प्रतिनिधित्व करते हैं, ट्रिगर बयान वास्तव में मार डाला था। इन ट्रिगर के लिए रो-वर्जनिंग का उपयोग नहीं किया जा सकता क्योंकि परिभाषा के अनुसार अभी तक कोई संशोधन नहीं हुआ है।

जब INSTEAD OFट्रिगर मौजूद होता है तो SQL सर्वर ट्रिगर DML कथन के लिए निष्पादन योजना को संशोधित करता है। सीधे प्रभावित तालिकाओं को संशोधित करने के बजाय, निष्पादन योजना एक छिपे हुए कार्यबल में परिवर्तन के बारे में जानकारी लिखती है।

इस वर्कटेबिल में मूल परिवर्तनों को करने के लिए आवश्यक सभी डेटा शामिल हैं, प्रत्येक पंक्ति (डिलीट या इंसर्ट) पर प्रदर्शन करने के लिए संशोधन का प्रकार, साथ ही OUTPUTक्लॉज़ के लिए ट्रिगर में किसी भी जानकारी की आवश्यकता होती है ।

अपनी निष्पादन योजना में सम्मिलित करें इस छिपे हुए वर्कटेस्ट में लेखन का प्रतिनिधित्व करता है। जब आप स्टेटमेंट के लिए पोस्ट-एक्ज़ीक्यूशन प्लान कैप्चर करते हैं, तो आप इस छिपे हुए वर्कटेबल को हटाए गए और सम्मिलित किए गए छद्म-टेबल के रूप में उपयोग करते हुए देखेंगे ।

मेरे SQLPerformance.com लेख को देखें, ट्रिगर के INSTEAD के बारे में दिलचस्प बातें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.