SQL تخزين خطة تنفيذ خطة التحسين: المعلمة استنشاقها وتأثيرها
يحدث هذا عندما يقوم محرك قاعدة البيانات بتجميع خطة تنفيذ الإجراء المخزنة استنادًا إلى قيم معلمات الإدخال المقدمة في وقت التجميع.myDate dateTime = null مثل إذا كان myDate هو null set @myDate = current_timestamp - قم بشيء باستخدام myDate
في هذا السيناريو ، إذا تم تمرير myDate كـ NULL أثناء التجميع الأولي ، فإن قاعدة البيانات تعمل على تحسين خطة التنفيذ لهذه القيمة. ومع ذلك ، قد تؤدي المكالمات اللاحقة إلى الإجراء مع قيم الإدخال الأخرى إلى ضعف الأداء ، حتى لو كانت هذه القيم خالية أيضًا. يمكن أن يختلف الإجراء بشكل كبير اعتمادًا بشكل كبير على قيم الإدخال التي تم تمريرها ، مما يؤدي إلى أوقات تنفيذ غير متوقعة. خطأ
CREATE PROCEDURE MyProc @MyDate DATETIME = NULL AS IF @MyDate IS NULL SET @MyDate = CURRENT_TIMESTAMP -- Do Something using @MyDateفي الحالة المذكورة ، كانت خطة التنفيذ التي تم إنشاؤها لـ myDate ضعيفة حتى عندما كانت القيمة المستخدمة لاغية. هذا السلوك غير عادي ويقترح مشكلة في استنشاق المعلمة. myDate dateTime = null مثل DECLARE MYDATE_COPY DATETIME setmydate_copy = myDate إذا كان mydate_copy null set @mydate_copy = current_timestamp - افعل شيئًا باستخدام mydate_copy
نظرة ثاقبة على المشكلة
المشكلة الأساسية في SQL Server 2005 هي مشكلة معروفة في استنشاق المعلمة في بعض مستويات التصحيح. في SQL Server 2008 ، يمكن استخدام شرط التحسين غير المعروف لحل مثل هذه المشكلات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3