উত্তর:
পারফরম্যান্স পার্থক্য দেখতে, এটি চেষ্টা করুন:
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name
SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name
'=' এর সাথে স্ট্রিংগুলির তুলনা করা আরও দ্রুত।
LIKE
এবং সাম্যতা অপারেটরের বিভিন্ন উদ্দেশ্য রয়েছে, তারা একই কাজ করে না:
=
অনেক দ্রুত, যেখানে LIKE
ওয়াইল্ডকার্ডের ব্যাখ্যা দিতে পারে। =
আপনি যেখানেই পারেন এবং LIKE
যেখানেই প্রয়োজন সেখানে ব্যবহার করুন ।
SELECT * FROM user WHERE login LIKE 'Test%';
নমুনা ম্যাচ:
TestUser1
TestUser2
টেস্টইউ
পরীক্ষা
আমার ছোট অভিজ্ঞতায়:
"=" সঠিক ম্যাচের জন্য।
আংশিক ম্যাচের জন্য "লাইক"
পোস্টগ্রিস স্ট্রিং ম্যাচিংয়ের জন্য অফার করে এমন আরও কয়েকটি কৌশল রয়েছে (যদি তা আপনার ডিবি হয়ে থাকে):
আইলিকে, এটি একটি সংবেদনশীল মত লাইক ম্যাচ:
select * from people where name ilike 'JOHN'
মিলগুলি:
এবং আপনি যদি সত্যিই পাগল হতে চান তবে আপনি নিয়মিত প্রকাশ করতে পারেন:
select * from people where name ~ 'John.*'
মিলগুলি:
ঠিক যেমন মাথা উপরে উঠছে, '=' অপারেটর ট্রানজ্যাক্ট-এসকিউএল-এর ফাঁক দিয়ে স্ট্রিংগুলি প্যাড করবে। সুতরাং 'abc' = 'abc '
সত্য ফিরে আসবে; 'abc' LIKE 'abc '
মিথ্যা ফিরে আসবে। বেশিরভাগ ক্ষেত্রে '=' সঠিক হবে, তবে সাম্প্রতিক ক্ষেত্রে আমার ক্ষেত্রে তা ছিল না।
সুতরাং যখন '=' দ্রুত, LIKE আরও স্পষ্টভাবে আপনার উদ্দেশ্যগুলি বর্ণনা করতে পারে।
LIKE
প্যাটার্ন মিলের =
জন্য ব্যবহৃত হয় এবং সমতা পরীক্ষার জন্য ব্যবহৃত হয় (যেমন COLLATION
ব্যবহারের দ্বারা সংজ্ঞায়িত )।
=
সূচকগুলি ব্যবহার করতে পারেন যখন LIKE
ক্যোয়ারীগুলিকে প্রায়শই প্রতিটি ফলাফল রেকর্ড করে ফলাফল নির্ধারণের জন্য পরীক্ষার প্রয়োজন হয় (যদি আপনি সম্পূর্ণ পাঠ্য অনুসন্ধান না করে থাকেন) তবে =
আরও ভাল পারফরম্যান্স রয়েছে।
পারফরম্যান্সটি ধীর হলেও এমনকি "লাইক" ব্যবহারের আরও একটি কারণ রয়েছে: তুলনা করার সময় চরিত্রের মানগুলি সুস্পষ্টভাবে পূর্ণসংখ্যায় রূপান্তরিত হয়, সুতরাং:
@ ট্রান্সসিড ভারচার ঘোষণা করুন (15)
যদি @ ট্রান্সসিড! = 0
আপনাকে "বার্কার মান '123456789012345' রূপান্তরটি একটি ইন কলামে ভেসে গেছে" ত্রুটি দেবে।