در ابتدا تعریف از این دو عبارت می کنیم .
Select * from table where column Like N'%test%'
که نتیجه این کوئری پیدا نمودن سطرهایی هست که در ستون مد نظر الگو
N'%test%'
را دارا می باشند.
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 انجام می دهد.
امیدوارم این نکته برای شما مفید واقع شده باشد.
Babak Rostami Senior computer software expert. C# Programming, Asp.Net, SQL Server,SEO ( Search Engine Optimization)
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود