अपडेट करें
MySQL 5.6
के अनुसार और बाद में, InnoDB
तालिकाएं Match... Against
. का समर्थन करती हैं ।
पहला बहुत . है बेहतर। MyISAM . पर तालिकाओं में यह उन स्तंभों के विरुद्ध एक पूर्ण पाठ अनुक्रमणिका का उपयोग करेगा। दूसरा प्रत्येक पंक्ति पर एक कॉनकैट करते हुए एक पूर्ण टेबल स्कैन करेगा और फिर एक तुलना करेगा।
LIKE
केवल तभी प्रभावी होता है जब आप इसे इसके विरुद्ध कर रहे हों:
- एक कॉलम (किसी फ़ंक्शन का परिणाम नहीं जब तक कि आपका विशेष डेटाबेस विक्रेता कार्यात्मक अनुक्रमणिका का समर्थन नहीं करता - उदाहरण के लिए Oracle - और आप उनका उपयोग कर रहे हैं);
- कॉलम की शुरुआत (यानी
LIKE 'blah%'
LIKE '%blah%'
. के विपरीत ); और - एक स्तंभ जिसे अनुक्रमित किया गया है।
यदि उन शर्तों में से कोई एक सत्य नहीं है तो SQL इंजन के लिए क्वेरी निष्पादित करने का एकमात्र तरीका पूर्ण तालिका स्कैन करना है। यह लगभग 10-20 हजार पंक्तियों के तहत प्रयोग करने योग्य हो सकता है। इसके अलावा यह जल्दी से अनुपयोगी हो जाता है।
नोट: MySQL पर MATCH के साथ एक समस्या यह है कि ऐसा लगता है कि यह केवल पूरे शब्दों से मेल खाता है, इसलिए 'bla' की खोज 'blah' के मान वाले कॉलम से मेल नहीं खाएगी, लेकिन 'bla*' की खोज होगी।