में काम करता है मैं mysql डेटाबेस जो केवल एक टेबल है का उपयोग कर रहा "डाटा"17,151257 rows.This मेज के साथ एक स्तंभ स्ट्रिंग है। मैं सभी पंक्तियों जिसमें स्ट्रिंग कॉलम किसी विशेष क्वेरी स्ट्रिंग ("entered_query" चर में संग्रहीत) शामिल हैं प्रिंट करना चाहते हैं, तो मैं निम्नलिखित प्रयोग किया है:mysql का चयन क्वेरी अनुकूलन और कैसे सीमा mysql
SELECT DISTINCT * from data WHERE string LIKE '%".$entered_query."%' limit 10
के रूप में क्वेरी ऊपर स्पष्ट बहुत ज्यादा समय ले जा रहा है निष्पादित करने के लिए ।
मैंने पढ़ा है कि अनुक्रमण का उपयोग किया जा सकता है लेकिन इस मामले में कैसे?
मैंने पूरे डेटा को 10 अलग-अलग पंक्तियों में विभाजित करने और फिरperl डीबीआई का उपयोग करके 10 समांतर प्रश्नों को निष्पादित करने का भी सोचा है।
अब मैं निम्नलिखित है प्रश्न:
- कैसे निष्पादन समय को कम करने के लिए?
- मैंने सुना है कि mysql क्वेरी में "पसंद" इंडेक्सिंग से बचाता है तो क्या उपरोक्त क्वेरी के लिए कोई बेहतर विकल्प है?
- जब हम mysql क्वेरी में सीमा 10 का उपयोग तो mysql के रूप में यह पहले 10 परिणाम पाता है या पहले इसे किसी क्वेरी के लिए पूरे डेटा तो यह पहले 10 परिणाम
मुझे आशा है कि '$ enter_query' में इसका नाम काफी कुछ नहीं है। अन्यथा यह आपके प्रश्नों को तेज़ करने का एक तरीका हो सकता है जो आप नहीं चाहते हैं। – innaM
'DISTINCT *' क्या करना है और क्या आपके दर्ज स्ट्रिंग के आकार की निचली सीमा है? – innaM
@innaM DISTINCT * का उपयोग केवल अद्वितीय टुपल का चयन करने के लिए किया जाता है। $ enter_query में क्वेरी है जो उपयोगकर्ताओं द्वारा "स्ट्रिंग" कॉलम ओडी टेबल "डेटा" में खोजने के लिए दर्ज की जाती है। * भ्रमित उदाहरण चुनने के लिए खेद है। –