मैं इस तरह की एक साधारण MySQL क्वेरी का उपयोग कर रहा हूं:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2
मेरे पास "फ़ील्ड" पर एक पूर्ण-पाठ अनुक्रमणिका है, और फिर भी यह बहुत धीमी है। मैं समझ गया कि मैच का उपयोग करने का एक विकल्प है। क्या अंतर है? कैसे? मेरे उपयोग के लिए सबसे अच्छा तरीका क्या है? ध्यान दें कि मैं "%" का उपयोग "आआ" से शुरू होने वाली हर चीज़ के लिए कर रहा हूँ
अपडेट करें: मैंने इस तरह कुछ उपयोग कर समाप्त कर दिया है: <कोड>चुनें
*, मैच (नाम) के खिलाफ ('ए*' बूलियन मोड में) स्कोर के रूप में
से
उपयोगकर्ताओं जहां
मैच (नाम) के खिलाफ ('ए*' बूलियन मोड में)
स्कोर द्वारा आदेश, लोकप्रियता DESC LIMIT 4
एक चीज जिसे मैं बदलना चाहता हूं, वह पहले SCORE द्वारा और फिर मेरे क्षेत्र की लोकप्रियता के आदेश के कारण नहीं है, और इसके बजाय एक साधारण वजन फ़ंक्शन द्वारा आदेश दिया गया है, जैसे 0.5*SCORE + 0.5*लोकप्रियता। कैसे?
1 उत्तर
LIKE
पूर्ण-पाठ अनुक्रमणिका का उपयोग नहीं करता है। फुलटेक्स्ट इंडेक्स का उपयोग करने के लिए, आपको मैच का उपयोग करना होगा (जैसा आपने कहा था):
SELECT *
FROM myTable
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE)
ORDER BY field2
MySQL मैन्युअल में पूर्ण-पाठ खोज कार्य।
संबंधित सवाल
नए सवाल
mysql
MySQL एक फ्री, ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) का उपयोग करता है। इस टैग को अन्य DBs जैसे SQL Server, SQLite आदि के लिए उपयोग न करें। वे विभिन्न DB हैं जो सभी डेटा का प्रबंधन करने के लिए SQL की अपनी बोलियों का उपयोग करते हैं।
ORDER BY (0.5*SCORE + 0.5*popularity)
को वास्तव में काम करना चाहिए