2010-03-20 15 views
19

वैसे भी है अगर वाइल्ड कार्ड शामिल है तो ऑपरेटर प्रदर्शन की तरह mysql को गति देने के लिए वैसे भी है? जैसे। '% परीक्षण%'mysql प्रदर्शन बूस्ट

उत्तर

27

यदि आपकी क्वेरी foo LIKE 'abc%' या foo LIKE 'abc%def%' जैसी दिखती है तो MySQL एक अनुक्रमणिका का उपयोग कर सकता है। यह पहले वाइल्डकार्ड से पहले किसी भी भाग या स्ट्रिंग के लिए इंडेक्स का उपयोग कर सकता है। यदि आपको किसी स्ट्रिंग के भीतर कहीं भी किसी शब्द से मिलान करने की आवश्यकता है, तो आप इसके बजाय FULLTEXT अनुक्रमणिका का उपयोग करने पर विचार करना चाहेंगे।

अनुक्रमित के बारे में अधिक विस्तार से: http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html

पूर्ण पाठ खोज: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

अनिवार्य रूप से, आप सूचकांक बी + ट्री सूचकांक के साथ एक स्तंभ है, कि पर्याप्त है। स्वचालित रूप से MySQL खोज क्वेरी के लिए तेज़ी से खोज करता है – Antony

4

खैर की तरह, सबसे सरल अनुकूलन एक निरंतर उपसर्ग ("%test" या "%test%" की जैसे "test%" बजाय) के लिए के बाद से है कि इंजन खोज सूचकांकों का उपयोग कर अंतरिक्ष को कम करने की अनुमति होगी होगा। हालांकि, यह सभी स्थितियों में संभव नहीं है।

कभी-कभी प्रीप्रोसेसिंग चरण एक वाइल्डकार्ड खोज को सामान्य समानता या पूर्ण टेक्स्ट खोज में बदल सकता है। आप अपने डेटा को ढांचा बनाने के लिए एक रास्ता ढूंढकर और अधिक हासिल करेंगे ताकि बाद वाले को अनुकूलित करने की कोशिश करने से इसकी तुलना में वाइल्डकार्ड खोज की आवश्यकता न हो।

संबंधित मुद्दे