تا %60 تخفیف خرید برای 5 نفر با صدور مدرک فقط تا
00 00 00
با توجه به مسدود بودن IP های خارج از ایران در سامانه شاپرک، برای خرید از وب سایت حتماً فیلترشکن خود را خاموش و از IP ایران استفاده کنید.
در توسینسو تدریس کنید

Like در برابر Contains در پایگاه داده SqlServer ، کدام یک سریعتر

در ابتدا تعریف از این دو عبارت می کنیم .

Like:

همانطور که از معنی این عبارت مشخص هست تعیین می کند کدام رشته های کارکتر منطبق با یک عبارت مشخص می باشند.

مثلا:

Select * from table where column Like N'%test%'

که نتیجه این کوئری پیدا نمودن سطرهایی هست که در ستون مد نظر الگو

N'%test%'

را دارا می باشند.

Contains:

در حقیقت یک تابع می باشد که همانند عبارت Like به جستجو می پردازد.

مثلا:

SELECT * FROM table WHERE CONTAINS(Column, '%test%')

اما نکته ای که در اینجا هست این می باشد. کدام یک سریعتر می باشند؟ و زودتر جواب را برمی گرداند؟

خب اختلاف این دو عبارت یعنی like و Contains زمانی رخ می دهد که بر روی آن ستون مورد جستجو ایندکس گذاری شود. یا بهتر بگم بر روی اون ستون یک FullTextIndex ( این نوع از ایندکس ها را بر روی ستون ها دارای نوع داده ای بزرگ Blob مثل (nvarchar(max یا فایل های تصویری اعمال می شود.) قرار گیرد. در این حالت تمایز اساسی در سرعت ایجاد خواهد شد و با تابع Contains می توان عبارت مد نظر را سریعتر یافت به نسبت Like.

حال دو کوئری را اجرا می کنیم

کوئری که با کلمه کلیدی Like بود یک clustered index scan انجام می کند و

کوئری که با Contains بود علاوه بر Clustered index scan ، عملیات های اضافه ای برای تطبیق کامل متن و یک merge join انجام می دهد.

Like vs contains

امیدوارم این نکته برای شما مفید واقع شده باشد.


نویسنده: بابک رستمی

منبع: انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر نام نویسنده و منبع دارای اشکال اخلاقی و شرعی می باشد.

نظر شما
برای ارسال نظر باید وارد شوید.
2 نظر