PostgreSQL के साथ नहीं, मैनुअल से :
तो एक बड़ा कैरेक्टर कॉलम (जैसे TEXT
.) या VARCHAR
एक निर्दिष्ट आकार सीमा के बिना) मुख्य तालिका डेटा से दूर संग्रहीत किया जाता है। इसलिए, PostgreSQL में आपका "इसे एक अलग तालिका में रखें" ऑप्टिमाइज़ेशन अंतर्निहित है। यदि आप PostgreSQL का उपयोग कर रहे हैं, तो अपनी तालिका को समझदारी से व्यवस्थित करें और डेटा लेआउट को PostgreSQL पर छोड़ दें।
मुझे नहीं पता कि MySQL या अन्य RDBMs अपने डेटा को कैसे व्यवस्थित करते हैं।
इस अनुकूलन के पीछे का कारण यह है कि डेटाबेस आमतौर पर प्रत्येक पंक्ति के लिए डेटा को डिस्क पर सन्निहित ब्लॉकों में रखेगा ताकि जब पंक्ति को पढ़ने या अद्यतन करने की आवश्यकता हो, तो उसे कम किया जा सके। यदि आपके पास एक पंक्ति में एक टेक्स्ट (या अन्य परिवर्तनीय लंबाई प्रकार) कॉलम है तो पंक्ति का आकार परिवर्तनीय है इसलिए पंक्ति से पंक्ति तक जाने के लिए और अधिक काम करने की आवश्यकता है। एक सादृश्य एक लिंक्ड सूची में किसी चीज़ तक पहुँचने बनाम एक सरणी तक पहुँचने के बीच का अंतर होगा; एक लिंक की गई सूची के साथ, आपको चौथे तक पहुंचने के लिए एक बार में तीन तत्वों को पढ़ना होगा, एक सरणी के साथ जिसे आप बस ऑफसेट करते हैं 3 * element_size
शुरुआत से बाइट्स और आप एक चरण में हैं।