मेरे पास एक सारणी है जिसे मैंने एक पूर्ण टेक्स्ट कैटलॉग बनाया है। तालिका में सिर्फ 6000 से अधिक पंक्तियां हैं। मैंने इंडेक्स में दो कॉलम जोड़े हैं। पहले को एक प्रकार का अद्वितीय पहचानकर्ता माना जा सकता है और दूसरा उस आइटम के लिए सामग्री माना जा सकता है (मेरी तालिका में 11 अन्य कॉलम हैं जो पूर्ण टेक्स्ट कैटलॉग का हिस्सा नहीं हैं)। यहाँ पंक्तियों की एक जोड़ी का एक उदाहरण है:फुल-टेक्स्ट इंडेक्सिंग सुस्त। विकल्पों की तलाश
TABLE: data_variables
ROW unique_id label
1 A100d1 Personal preference of online shopping sites
2 A100d2 Shopping behaviors for adults in household
सामने के छोर पर मेरी वेब अनुप्रयोग में, मैं एक पाठ बॉक्स है कि उपयोगकर्ता में टाइप आइटम से मेल खाने वाले वे कर रहे हैं जो कुछ शब्दों की एक सूची प्राप्त करने के लिए कर सकते हैं UNIQUE ID
या LABEL
कॉलम में खोज रहे हैं। इसलिए, उदाहरण के लिए, यदि उपयोगकर्ता sho
या a100
में टाइप किया गया है तो उपरोक्त दोनों पंक्तियों के साथ एक सूची पॉप्युलेट की जाएगी। अगर वे behav
में टाइप करते हैं तो एक सूची ऊपर केवल पंक्ति 2 के साथ आबादी होगी।
यह प्रत्येक keyup
पर एक अजाक्स अनुरोध के माध्यम से किया जाता है। पीएचपी एसक्यूएल सर्वर है कि लगता है कि पर एक संग्रहीत प्रक्रिया कॉल: (। @search
उपयोगकर्ता कि संग्रहित प्रक्रिया में पारित हो जाता से पाठ है)
SELECT TOP 50 dv.id, dv.id + ': ' + dv.label,
dv.type_id, dv.grouping, dv.friendly_label
FROM data_variables dv
WHERE (CONTAINS((dv.unique_id, dv.label), @search))
मैंने देखा है कि यह बहुत सुस्त हो जाता है , विशेष रूप से जब मैं क्वेरी में TOP 50
का उपयोग नहीं कर रहा था।
जो मैं खोज रहा हूं वह सीधे एसक्यूएल सर्वर पर या पूर्ण-पाठ अनुक्रमणिकाकरण विचार को छोड़कर और क्लाइंट-साइड पर खोजने योग्य वस्तुओं की एक सरणी के माध्यम से खोजने के लिए jQuery का उपयोग करके इसे गति देने का एक तरीका है। मैंने jQuery स्वत: पूर्ण सामग्री और ऑटोकंपलेट के लिए कुछ अन्य jQuery प्लगइन में थोड़ा सा देखा है, लेकिन अभी तक कुछ भी नकल करने की कोशिश नहीं की है। यह मेरा अगला कदम होगा, लेकिन मैं यह देखने के लिए पहले यहां जांचना चाहता था कि मुझे कौन सी सलाह मिलेगी।
अग्रिम धन्यवाद।
आप पुष्टि कर सकते हैं कि आप एसक्यूएल प्रदर्शन अकेले मापा जाता है और सिर्फ अपने वेब पेज का उपयोग नहीं कर रहे हैं?यदि आप इसका परीक्षण करने के लिए वेब पेज का उपयोग कर रहे हैं, तो कई अन्य चीजें समस्या हो सकती हैं, सुनिश्चित करें कि आप इसे जानते हैं, बस दोबारा जांच करना चाहते हैं। क्या आप अधिक खोज स्ट्रिंग टाइप करते समय तेज़ी से बढ़ते हैं? यदि हां, तो इसका मतलब है कि यह एसक्यूएल – rlb
नहीं है 'यह प्रत्येक कीप पर अजाक्स अनुरोध के माध्यम से किया जाता है' - क्या ऐसा होने से पहले न्यूनतम लंबाई है? यह मेरे पालतू शिखरों में से एक है, इसलिए मैं बहुत ज्यादा नहीं रुकूंगा, लेकिन जब पृष्ठ मेरे पहले कुछ कीस्ट्रोक निगलता है तो मुझे इससे नफरत है। कुंजीपटल पर पूर्ण पाठ खोज लागू होने से पहले यह कम से कम तीन या चार वर्णों की प्रतीक्षा करने के लिए प्रदर्शन कोण से बेहतर होगा। पहले कुछ पुनर्प्राप्ति वापस बोतलबंद लाते हैं। भले ही आप इनकार करने से पहले कुछ पात्रों की प्रतीक्षा करें, मैं उम्मीद नहीं करूँगा कि यह बहुत अच्छी तरह से स्केल करे। और मुझे पता है कि क्लाउड लेटेंसी के कारण बादल में डीबी पर बहुत अच्छा काम नहीं करेगा। – Tim
टिम: हाँ - यह 2 कीस्ट्रोक के बाद ट्रिगर करता है। मैं इसे और अधिक नहीं बना सकता क्योंकि अद्वितीय आईडी हैं जो केवल दो वर्ण लंबी हैं। – tptcat