आप सही कह रहे हैं कि ईएवी डिज़ाइन के माध्यम से बहुत सी विशेषताओं में शामिल होने से जुड़ने की सीमा से अधिक होने की संभावना है। इससे पहले भी, संभवतः जुड़ने की एक व्यावहारिक सीमा होती है क्योंकि इतने सारे जुड़ने की लागत ज्यामितीय रूप से उच्च और उच्च हो जाती है। यह कितना खराब है यह आपके सर्वर की क्षमता पर निर्भर करता है, लेकिन इसके 61 से काफी कम होने की संभावना है।
इसलिए एक परिणाम उत्पन्न करने के लिए एक ईएवी डेटा मॉडल को क्वेरी करना जैसे कि यह एक पारंपरिक रिलेशनल मॉडल (एक कॉलम प्रति विशेषता) में संग्रहीत किया गया था, समस्याग्रस्त है।
समाधान:इसे जॉइन प्रति एट्रिब्यूट के साथ न करें, जिसका अर्थ है कि आप पूरी तरह से SQL के साथ पारंपरिक पंक्ति-प्रति-इकाई प्रारूप में परिणाम उत्पन्न करने की उम्मीद नहीं कर सकते।
मैं Magento के स्कीमा से अच्छी तरह परिचित नहीं हूँ, लेकिन मैं आपकी क्वेरी से अनुमान लगा सकता हूँ कि ऐसा कुछ काम कर सकता है:
SELECT cpe.entity_id
, o.value AS option
, v.value AS option_value
FROM catalog_product_entity AS cpe
INNER JOIN catalog_product_entity_int AS i
ON cpe.entity_id = i.entity_id AND i.attribute_id IN (2,3,4)
INNER JOIN eav_attribute_option AS o
ON i.value = o.option_id AND i.attribute_id = o.attribute_id
INNER JOIN eav_attribute_option_value AS v
ON v.option_id = o.option_id;
IN(2,3,4,...)
विधेय वह जगह है जहाँ आप कई विशेषताएँ निर्दिष्ट करते हैं। अधिक विशेषताएँ प्राप्त करने के लिए अधिक जुड़ने की आवश्यकता नहीं है। वे केवल स्तंभों के बजाय पंक्तियों के रूप में वापस आ जाते हैं।
इसका मतलब है कि आपको इस परिणाम सेट की सभी पंक्तियों को लाने के लिए एप्लिकेशन कोड लिखना होगा और उन्हें एक ही ऑब्जेक्ट के फ़ील्ड में मैप करना होगा।
@Axel की टिप्पणियों से, ऐसा लगता है जैसे Magento परिणाम सेट के इस उपभोग को करने और इसे किसी ऑब्जेक्ट में मैप करने के लिए सहायक कार्य प्रदान करता है।