इसका उत्तर देने में थोड़ा देर हो गई, लेकिन प्रासंगिक खोज के लिए आने के बाद से यह किसी के लिए उपयोगी होगा:
वर्डप्रेस अपने डेटाबेस कार्यान्वयन के भाग के लिए ईएवी डेटाबेस स्कीमा का उपयोग करता है। यह डेटा और उपयोगकर्ताओं दोनों को प्रभावित करता है। (उन्हें अलग-अलग टेबल में रखा गया है)
इसे डेटा एंगल से समझाने के लिए:
Wp_posts में सीधे सुलभ पोस्ट से संबंधित विवरणों के साथ, प्रत्येक पोस्ट के लिए कई मेटा wp_postmeta तालिका में पोस्ट किया जाता है। पोस्ट (या कस्टम पोस्ट प्रकार) से संबंधित कोई भी डेटा।
इसके साथ समस्या यह है कि, यदि आपके पास पदों या पृष्ठों (या कस्टम पोस्ट / डेटा) के HEAPS हैं, तो मेटा में मिली किसी भी संपत्ति की खोज करना काफी धीमा हो जाता है। आप पहले मेटा तालिका में सभी प्रविष्टियों को आपके द्वारा आवश्यक मानदंडों के लिए खोजते हैं, फिर तालिका से संबंधित पोस्ट प्राप्त करें। किकर आपको अलग से EACH मानदंड खोजने की जरूरत है। तो टैग के लिए एक खोज, आपको 'मेटा 1' के लिए मान X के साथ पोस्ट मिलते हैं, फिर आप दूसरे मानदंड के लिए खोज करते हैं, कहते हैं, कस्टमक्रिटेरिया और कस्टमक्रिटेरिया में customcriteriavalue1 के साथ पोस्ट आईडी प्राप्त करें, और फिर इन के चौराहे को लें और फिर प्राप्त करने के लिए जाएं उस चौराहे के साथ पोस्ट टेबल से पोस्ट विवरण।
एक उदाहरण के रूप में - WooCommerce में 30,000 उत्पाद रखें, और आप नीचे दिए गए उत्तर में wp_postmeta में ~ 1,800,000 पंक्तियों के साथ समाप्त हो जाएंगे:
पोस्ट मेटा बनाम अलग डेटाबेस टेबल
तो, यह न केवल बहुत ही अयोग्य खोज करेगा (विशेषकर जब आप कई मानदंडों के लिए wp_postmeta पर स्वयं जुड़ते हैं), बल्कि 1,8 मिलिट्री रो में से एक पंक्ति को क्वेरी करने से भी प्रदर्शन हिट होता है।
ईएवी स्कीमा की कमी।
तो बहुत सारे पोस्ट के साथ, वर्डप्रेस डीबी कार्यान्वयन जटिल खोजों को बहुत धीमा कर देता है।
यदि आप कैशिंग प्लगइन्स का उपयोग करते हैं तो हज़ारों पोस्ट के साथ वर्डप्रेस साइट चलाना काफी उल्लेखनीय है। आप और भी जा सकते हैं। लेकिन खोज एक समस्या होगी।
............
उपयोगकर्ताओं के साथ भी ऐसा ही है - wp_usermeta समान EAV प्रारूप का भी उपयोग करता है। इसलिए यदि आपको बहुत सारे उपयोगकर्ता मिलते हैं, और बहुत सारे प्लगइन्स हैं जो wp_usermeta में विभिन्न उपयोगकर्ता डेटा संग्रहीत करते हैं, तो आप उसी प्रदर्शन को हिट करेंगे।
इतने सारे उपयोगकर्ताओं के साथ इसका उल्लेख नहीं करने की संभावना है कि आपके पास पहले से ही उच्च संख्या में पोस्ट होंगे - जब तक कि आपका ऐप ऐसा कुछ नहीं है जो उपयोगकर्ताओं (ज्यादातर सीआरएम आदि) के साथ करना है, और आप अपने उपयोगकर्ता डेटा को wp_usermeta के बजाय wp_postmeta में संग्रहीत करना चुनते हैं । (हालांकि अप्रत्याशित रूप से)।
.........
कुछ प्लगइन्स हैं जो इस मुद्दे पर जाने की कोशिश करते हैं, जैसे मेटा एक्सेलेरेटर।
https://wordpress.org/plugins/meta-accelerator/
यह प्लगइन आपके द्वारा चुने गए किसी भी पोस्ट प्रकार के लिए कोई डेटा लेता है और उन्हें फ्लैट टेबल में रखता है। यह बहुत खोज को गति देता है, और यह किसी भी विलक्षण मान को क्वेरी करने में भी तेजी लाता है।
लेकिन वह प्लगइन अभी अपनी प्रारंभिक अवस्था में है।
वैकल्पिक रूप से, आप सर्वर में ElasticSearch स्थापित कर सकते हैं और ElasticPress प्लगइन या किसी अन्य प्लगइन का उपयोग कर सकते हैं जो इस तरह की खोजों को गति देने के लिए वर्डप्रेस को एकीकृत करता है।
PHP
स्टैक का हिस्सा आपका मुद्दा नहीं होगा (फेसबुक एक संशोधित PHP के साथ बनाया गया है), लेकिनMySQL
बहुत अच्छी तरह से सीमित हो सकता है।