تخفیف های ویژه عیدانه توسینسو
تا 60 درصد تخفیف ویژه
00ساعت 00دقیقه 00ثانیه

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

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


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

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

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

عنوان
1 چرا باید از SQL Server استفاده کنیم!؟ رایگان
2 نصب گام به گام SQL Server 2014 به صورت عملی – قسمت اول رایگان
3 نصب گام به گام SQL Server 2014 به صورت عملی – قسمت دوم رایگان
4 Like در برابر Contains در پایگاه داده SqlServer ، کدام یک سریعتر رایگان
زمان و قیمت کل 0″ 0
2 نظر
حمید ج. فرد

نکته خوبی بود. اما در نظر داشته باشید که Fulltext فقط برای پیدا کردن کلمه مورد نظر نیست بلکه در مواقعی ما می خواهیم کلمات هم معنی را هم پیدا کنیم مثل Customer و Client یا کلمه ای نزدیک به کلمه دیگری مانند Best در نزدیکی کلمه Employee. البته اگر شما % اول را در دستور Like حذف کنید در شرایطی می توانید با عملگر Index Seek داده ها را ارزیابی کنید.

یک نکته اینکه Fulltext یک ویژگی و قابلیت عجیبی در SQL Server است به راحتی از آن گذر نکنید.

نکته خوبی بود.

بابک رستمی

بله درست می فرمایید. ممنونم از نکته ای که اشاره فرمودید.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....