बस एक त्वरित नोट क्योंकि इस तरह की चीज़ों को बार-बार देखा जाता है:prism_worlds
पर जॉइन करें अनावश्यक है क्योंकि आपको (संभवतः) उस तालिका के डेटा की आवश्यकता नहीं है। आप मूल रूप से डेटाबेस से पूछ रहे हैं "मुझे दुनिया का हर नाम दें जिसके लिए नाम 'कुछ' के बराबर है"। इसके बजाय एक अदिश उपश्रेणी का प्रयोग करें।
prism_worlds.world
. पर एक अद्वितीय अनुक्रमणिका बनाएं और क्वेरी चलाएँ जैसे
SELECT *
FROM prism_data
WHERE prism_data.world_id = (SELECT w.world_id FROM prism_worlds AS w WHERE w.world = 'DeuxTiersMondes')
LIMIT 1000;
अनुकूलक यह पता लगा लेगा कि prism_data.world_id
एक स्थिर मूल्य के लिए विवश है। MySQL इस मान का पता लगाने और क्वेरी के साथ इसका उपयोग करने के लिए समय से पहले एक क्वेरी चलाएगा। देखें EXPLAIN
const
. के लिए -सबक्वेरी निष्पादित।
prism_data.x
के संबंध में , .y
और .z
:आप उसके लिए एक ज्यामिति स्तंभ और एक स्थानिक सूचकांक बनाना चाह सकते हैं। यदि आपको अलग-अलग मानों से चिपके रहने की आवश्यकता है, तो आप संपूर्ण विश्व ज्यामिति को निश्चित आकार के स्वरों (एक एकल इंट द्वारा दर्शाए गए) में अलग करना चाहते हैं और यह पता लगाने के लिए सरल ज्यामिति का उपयोग कर सकते हैं कि कौन सी स्थिति किस स्वर में आती है।
मेरा व्यक्तिगत समाधान इस तालिका में लाखों प्रश्नों को जोड़ने पर बहुत अधिक विचार नहीं करना होगा। इंडेक्स इसे धीमा और बड़ा बना देंगे। समय से पहले परिणाम तैयार करने के लिए एक रिपोर्टिंग तालिका (भौतिक दृश्य) भरने के लिए क्रॉन जॉब का उपयोग करें और जब तक क्रॉन जॉब आसपास आता है और उन्हें फिर से अपडेट करता है तब तक उनका उपयोग करें।