मैं दूसरों से सहमत हूं - और मैं वह हूं जिसने ज़ेन फ्रेमवर्क में टेबल-रिलेशनशिप एपीआई डिज़ाइन और कोड किया है जिसका आप उपयोग कर रहे हैं! यदि आप पहले से ही माता पिता पंक्ति के लिए एक संदर्भ है
findDependentRowset()
उपयोगी है, और आप सकता संबंधित पंक्तियों लाने के लिए की जरूरत है। यह फ़ंक्शन कम से कम कुशल नहीं है, दोनों तालिकाओं में शामिल होने वाली क्वेरी की तुलना में। यदि आपको प्रदर्शन प्राथमिकता है, तो आपको कभी भी लूप में findDependentRowset()
पर कॉल नहीं करना चाहिए। इसके बजाय, एक सारणी क्वेरी लिखें जिसमें दोनों टेबलों का जॉइन शामिल है।
पीछे की ओर यह दुर्भाग्यपूर्ण है कि उनके फ्रेमवर्क के लिए ज़ेंड का लक्ष्य प्रदर्शन की बजाय डिजाइन की सादगी थी।
यदि मैंने ज़ेंड में काम करना जारी रखा था, तो मैंने संबंधित Zend_Db_Table ऑब्जेक्ट्स के खिलाफ जुड़े प्रश्नों को करने के सुविधाजनक तरीके से टेबल इंटरफेस को बेहतर बनाने की कोशिश की होगी। प्रोजेक्ट छोड़ने के बाद लागू किया गया समाधान एक ऑब्जेक्ट का चयन करना है और इसे fetchAll()
पर पास करना है, जो बहुत बदसूरत है।
संपादित करें: आपकी टिप्पणी के जवाब में, मैंने आवश्यकताओं का एक सेट दिए गए समाधान को बनाने के लिए अपनी पूरी कोशिश की। मैंने जो किया उसके बारे में मुझे ठीक लगता है। लेकिन ज़ेंड एक आईडीई टूल्स कंपनी है, इसलिए स्वाभाविक रूप से उनका मूल्य कोडिंग की सुविधा में है, रनटाइम प्रदर्शन नहीं। "रैपिड एप्लिकेशन डेवलपमेंट" का मतलब तेजी से अनुप्रयोग विकसित करना, या अनुप्रयोगों को तेजी से विकसित करना है। एक उपकरण कंपनी के लिए, इसका मतलब है उत्तरार्द्ध।
स्रोत
2008-12-10 17:24:58
मैं कहूंगा कि एक्स पंक्तियों को पुनर्प्राप्त करने वाली क्वेरी * प्रत्येक पंक्ति को पुनर्प्राप्त करने वाले x प्रश्नों की तुलना में * x गुना तेज * से अधिक है। अधिक पंक्तियां, अंतर बड़ा हो जाता है। – Tomalak
यदि आप विस्थापन भाग पर थोड़ा सा विस्तार कर सकते हैं, तो उत्तर स्वीकार्य हो सकता है। धन्यवाद! – markus
वह क्या कह रहा है उस पर विस्तृत करने के लिए: आप 12 अलग-अलग डेटाबेस को मार देंगे। यह (कम से कम) एक दर्जन PHP फ़ंक्शन कॉल करता है, संभवतः डीबी सर्वर पर नेटवर्क पर 12 राउंड ट्रिप, सर्वर को 12 बार क्वेरी को पार्स करना और निष्पादन योजना बनाना है ... – flussence