sr0006: تحريك مرجع عمود بجانب واحد من عامل المقارنة إلى استخدم فهرس عمود

RuleId

sr0006

Category

Microsoft.الأداء

تعطيل تغيير

عدم فصل

السبب

كـ جزءا من المقارنة، يتضمن تعبير أو مرجع عمود.

وصف القاعدة

الخاص بك تعليمات برمجية قد يؤدي مسح جدول إذا كان يقوم بمقارنة تعبير يحتوي على مرجع عمود.

كيف إلى الإصلاح انتهاكات

إلى حل هذه المشكلة، يجب أن rework المقارنة بحيث يظهر مرجع العمود فقط تشغيل جانب واحد من operaإلىr المقارنة، بدلاً من داخل تعبير. عند تشغيل تعليمات برمجية التي قام مرجع العمود فقط على جانب واحد من عوامل التشغيل comparهوon، SQL Serverيمكن استخدام الفهرس العمود، لا فحص الجدول هو إجراء.

عند إلى منع التحذيرات

قد منع هذا التحذير إذا كان الجدول الذي عمود هو مقارنتهما سوف تحتوي مطلقا على المزيد بعض صفوف.

مثال

في إجراء أول، يتضمن جملة الموقع أعمدة [c1] في تعبير كـ جزءا من مقارنة. في إجراء الثاني، مقارنة نتائج مطابقة لكن لا تتطلب عملية فحص جدول.

CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] + 5 > @param1)

CREATE PROCEDURE [dbo].[Procedure3Fixed]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] > (@param1 - 5))

راجع أيضًا:

المبادئ

‏‏يتم الآن التحليل? قاعدة بيانات تعليمات برمجية إلى تحسين جودة تعليمات برمجية