2011-07-14 20 views
10

मैं एक साधारण mysql का उपयोग कर रहा क्वेरी की तरह इस तरह के साथ धीमी है:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2mysql% क्वेरी की तरह पूर्ण-पाठ सूचकांक

मैं "मैदान" पर एक पूर्ण-पाठ सूचकांक है, और अभी भी यह बहुत है धीमी गति से। मुझे समझ में आया कि मैच का उपयोग करने का एक विकल्प है। अंतर क्या है? कैसे? मेरे उपयोग के लिए सबसे अच्छा तरीका क्या है? सूचना मैं "%" का उपयोग कर रहा सब कुछ के लिए है कि "aaa"

अद्यतन के साथ शुरू होता: मैं कुछ इस तरह का उपयोग कर समाप्त हो गया है: SELECT
*, MATCH (name) AGAINST ('a*' IN BOOLEAN MODE) AS SCORE
FROM
users WHERE
MATCH (name) AGAINST ('a*' IN BOOLEAN MODE)
ORDER BY SCORE, popularity DESC LIMIT 4

एक बात मैं परिवर्तन करना चाहते हैं, है एससीओआर द्वारा पहली बार ऑर्डर के कारण और फिर मेरे क्षेत्र की लोकप्रियता से, और इसके बजाय एक साधारण वजन समारोह द्वारा आदेश, 0.5 * एससीओआर + 0.5 * लोकप्रियता जैसे कुछ। कैसे?

उत्तर

10

LIKE पूर्ण-पाठ अनुक्रमणिका का उपयोग नहीं करता है। की प्रतिलिपि प्राप्त सूचकांक का उपयोग करने के लिए, आपको मैच उपयोग करने के लिए (के रूप में आप ने कहा है):

SELECT * 
FROM myTable 
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE) 
ORDER BY field2 

MySQL ManualFull-Text Search Functions पर एक व्यापक अध्याय है।

+0

दिलचस्प .. क्या किसी के पास डीबी 2 या सिबेस के लिए कोई समकक्ष प्रश्न है? Google बहुत मदद नहीं कर रहा है। – user606723

+0

@ user606723 इस आलेख पर एक नज़र डालें: [डीबी 2 टेक्स्ट सर्च के साथ पूर्ण-पाठ खोज] (http://www.ibm.com/developerworks/data/tutorials/dm-0810shettar/index.html) – Jacob

+0

मैंने अपडेट किया है "ऑर्डर बाय" के साथ मेरी क्वेरी। मैं इसे कैसे जोड़ सकता हूं? – Noam

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