जवाबों:
प्रदर्शन अंतर देखने के लिए, इसे आज़माएँ:
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
'=' के साथ तार की तुलना बहुत तेज है।
मेरे छोटे से अनुभव में:
सटीक मेल के लिए "="।
आंशिक मैचों के लिए "पसंद"।
स्ट्रिंग मिलान के लिए पोस्टग्रेज ऑफर करने वाले कुछ अन्य ट्रिक्स हैं (यदि ऐसा होता है तो आपका DB होना):
ILIKE, जो एक असंवेदनशील LIKE मैच है:
select * from people where name ilike 'JOHN'
मेल खाता है:
और यदि आप वास्तव में पागल होना चाहते हैं तो आप नियमित अभिव्यक्ति का उपयोग कर सकते हैं:
select * from people where name ~ 'John.*'
मेल खाता है:
बस एक सिर के रूप में, '=' ऑपरेटर ट्रांज़ेक्ट-एसक्यूएल में रिक्त स्थान के साथ तार लगाएगा। तो 'abc' = 'abc '
सच्चा लौटेगा; 'abc' LIKE 'abc '
झूठा लौटेगा। ज्यादातर मामलों में '=' सही होगा, लेकिन मेरे हालिया मामले में ऐसा नहीं था।
इसलिए जब '=' तेजी से होता है, तो LIKE आपके इरादे को और स्पष्ट कर सकता है।
LIKE
पैटर्न मिलान के लिए उपयोग किया जाता है और =
समानता परीक्षण ( COLLATION
उपयोग में परिभाषित ) के लिए उपयोग किया जाता है ।
=
अनुक्रमणिका का उपयोग कर सकते हैं, जबकि LIKE
क्वेरीज़ में आमतौर पर इसे फ़िल्टर करने के लिए सेट किए गए परिणाम में हर एक रिकॉर्ड का परीक्षण करने की आवश्यकता होती है (जब तक कि आप पूर्ण पाठ खोज का उपयोग नहीं कर रहे हैं) इसलिए =
बेहतर प्रदर्शन।