मैं ADO.NET का उपयोग कर नीचे क्वेरी निष्पादित कर रहा हूं। इसे निष्पादित करने में लगभग 60 के दशक लगते हैं। उसी समय जब मैं SQL सर्वर प्रबंधन स्टूडियो में क्वेरी चलाता हूं, तो इसमें केवल 1 सेकंड लगता है। इतना बड़ा अंतर क्यों है और मैं प्रदर्शन में सुधार कैसे कर सकता हूं?

मैंने संग्रहीत प्रक्रिया की भी कोशिश की। इसमें भी लगभग 60 का समय लग रहा है।

SqlCommand sc = new SqlCommand(@"
BEGIN TRAN

BEGIN TRY

DELETE FROM [dbo].[Table1]
  WHERE ID = @Id ; -- nearly 600 records

DELETE FROM [dbo].[Table2]
  WHERE ID = @Id ; -- nearly 6500 records

DELETE FROM [dbo].[Table3]
  WHERE ID = @Id;  -- 1 record


COMMIT TRAN
END TRY
BEGIN CATCH

ROLLBACK TRAN
THROW
END CATCH
");
1
Irf92 14 नवम्बर 2018, 11:25

1 उत्तर

सबसे बढ़िया उत्तर

मैंने नीचे यह कोशिश की। यह पैरामीटर सूँघने के कारण हो रहा है। इस समस्या को दूर करने के लिए 4 तरीके हैं

  • विकल्प (पुनः संकलित)
  • विकल्प (के लिए अनुकूलित करें (@VARIABLE=VALUE))
  • विकल्प (के लिए अनुकूलित करें (@VARIABLE UNKNOWN))
  • स्थानीय चर का प्रयोग करें

नीचे मैंने इस समस्या को ठीक करने के लिए चौथी विधि का उपयोग किया है। संदर्भित

SqlCommand sc = new SqlCommand(@"
BEGIN TRAN

BEGIN TRY
Declare @Id int = @PId ; -- passing the parameter only here
DELETE FROM [dbo].[Table1]
WHERE ID = @Id ; -- nearly 600 records

DELETE FROM [dbo].[Table2]
WHERE ID = @Id ; -- nearly 6500 records

DELETE FROM [dbo].[Table3]
WHERE ID = @Id;  -- 1 record


COMMIT TRAN
END TRY
BEGIN CATCH

ROLLBACK TRAN
THROW
END CATCH
");

बेहतर उत्तर देने के लिए सभी का धन्यवाद

1
Irf92 19 नवम्बर 2018, 08:17