Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL चयन बहुत धीमा लगता है लेकिन यह नहीं सोच सकता कि कैसे सुधार किया जाए?

मुझे लगता है कि क्वेरी और टेबल की परिभाषा में ही कुछ समस्याएं हैं।

  • Table.name एक 4K चार कॉलम है
  • क्वेरी उस कॉलम के अनुसार क्रमबद्ध की जा रही है

आप उस कॉलम के आधार पर सॉर्ट कर रहे हैं जिसमें आप स्ट्रिंग्स स्टोर कर रहे हैं। स्ट्रिंग्स द्वारा सॉर्ट करने के लिए, स्ट्रिंग तुलनाओं को निष्पादित करना होगा। स्ट्रिंग की तुलना धीमी गति से चलने वाली होती है और, आपके द्वारा उपयोग किए जा रहे कॉलम के आकार को देखते हुए, यह ध्यान देने योग्य प्रदर्शन हिट का कारण बन सकता है।

हमारे पास आपके name . की सामग्री का कोई संकेत नहीं है कॉलम और वास्तविक नाम के बारे में सोचना मुश्किल लगता है जिसके लिए उस . की आवश्यकता होगी कई पात्र।

यदि इस स्ट्रिंग में डेटा के कई टुकड़े हैं जो अवधारणात्मक रूप से भिन्न हैं, तो शायद कॉलम को कई अलग-अलग कॉलम में विभाजित किया जाना चाहिए, और फिर उपयुक्त के रूप में सामान्यीकृत किया जाना चाहिए।

यदि आप उस कॉलम की सामग्री को कई छोटे भागों में तोड़ सकते हैं और फिर उनका उपयोग कर सकते हैं, तो स्ट्रिंग तुलना, हालांकि अभी भी महंगी है, 'तेज' होगी, क्योंकि तुलना की जा रही स्ट्रिंग्स अब की तुलना में काफी कम होंगी।

एक और बात पर विचार करना है कि क्या आप से बचकर . खोज को अनुकूलित कर सकते हैं स्ट्रिंग तुलना पूरी तरह से या उन प्रश्नों से परहेज करके जो इस तथ्य के बावजूद कि आपने सूचकांकों को परिभाषित किया है, एक पूर्ण तालिका स्कैन का कारण होगा।

उसके लिए आपको explain . का उपयोग करके देखना चाहिए अपनी क्वेरी के साथ, ताकि आप क्वेरी निष्पादन योजना

डॉक्स को उद्धृत करना (मेरा जोर):

1 संपादित करें

आपने स्पष्ट किया है कि आपका name कॉलम वास्तव में उपयोगकर्ता नोट्स के लिए है। इस मामले में, मुझे लगता है कि आपको निम्नलिखित पर विचार करना चाहिए (इसके अलावा जिसका पहले ही उल्लेख किया जा चुका है):

  1. कॉलम का नाम बदलकर उसकी वास्तविक सामग्री से संबंधित किसी चीज़ से कर दें
  2. इंडेक्स को कॉलम से हटाएं
  3. नहीं नहीं उस कॉलम का उपयोग केवल उसे प्रदर्शित करने के लिए चुनने के अलावा खोजने, छांटने, या किसी अन्य ऑपरेशन के लिए करें (यह बहुत होगा) दुर्लभ अगर इसे किसी और चीज के लिए इस्तेमाल करने की आवश्यकता है, आईएमएचओ।)
  4. वैकल्पिक रूप से, कॉलम को text में बदलने पर विचार करें टाइप करें और आपको उपयोगकर्ता निबंधों . के बारे में अधिक चिंता करने की आवश्यकता नहीं होगी बिना किसी चेतावनी के काट दिया जाना (जब तक कि GUI ने उपयोगकर्ता के लिए समान इनपुट लंबाई सीमा लागू नहीं की हो)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL ऑटो इंक्रीमेंट 10 से बढ़ रहा है (ClearDB और Node)

  2. OpenCart में एक कस्टम शिपिंग विधि बनाएँ:भाग दो

  3. जब यह NULL हो तो MAX फ़ंक्शन के साथ 0 कैसे सेट करें?

  4. डेबियन पर MySQL कैसे स्थापित करें 7

  5. डुप्लीकेट कुंजी अपडेट पर डालने के समान