संबंधपरक डेटाबेस प्रति तालिका कई पंक्तियों को संग्रहीत करने के लिए डिज़ाइन किए गए हैं। बड़ी तालिकाओं को सुविधाजनक बनाने के लिए तंत्र का एक पूरा समूह है, जैसे:
- खोजों को गति देने के लिए फ़ील्ड के किसी भी संयोजन पर अनुक्रमणिका
- पेज कैशिंग इसलिए आमतौर पर इस्तेमाल किए जाने वाले पेज मेमोरी में रहते हैं
- अनुरोधों को गति देने के लिए लंबवत विभाजन (स्तंभ डेटाबेस)
- उन्नत एल्गोरिदम जैसे हैश जॉइन और ग्रुप बाय (कम से कम MySQL के अलावा अन्य डेटाबेस में)
- प्रश्नों को संसाधित करने के लिए एकाधिक प्रोसेसर और डिस्क का उपयोग
एक टेबल में डेटा डालते समय एक चीज अधिक कठिन होती है, और वह है सुरक्षा। और, वास्तव में, कुछ परिस्थितियों में यह एक प्राथमिक चिंता है और मूल रूप से यह आवश्यक है कि डेटा अलग तालिका में जाए। वे एप्लिकेशन दुर्लभ और बहुत दूर हैं।
कई तालिकाओं में डेटा संग्रहीत करना कितना खराब हो सकता है, इसका एक उदाहरण देने के लिए, कल्पना करें कि आपके सिस्टम में प्रति कंपनी एक रिकॉर्ड है और आप इसे एक तालिका में संग्रहीत करते हैं। यह रिकॉर्ड कंपनी के बारे में जानकारी संग्रहीत करता है - नाम, पता, कुछ भी। कॉल 100 बाइट्स की जानकारी है।
आपकी स्कीमा में प्रत्येक "कंपनी" के लिए एक अलग तालिका है, ताकि प्रति तालिका एक पंक्ति हो। वह रिकॉर्ड एक डेटा पेज पर रहेगा। एक डेटा पृष्ठ 16 kbytes हो सकता है, इसलिए आप इस डेटा को संग्रहीत करने के लिए लगभग 15.9 kbytes बर्बाद कर रहे हैं। इस तरह के 1000 रिकॉर्ड्स को स्टोर करना लगभग 7 पेज (112 Kbytes) के बजाय 16 Mbytes पर कब्जा कर लेता है। यह एक महत्वपूर्ण प्रदर्शन हिट हो सकता है।
इसके अलावा, कई तालिकाओं के साथ आप सभी तालिकाओं को बनाए रखने और विभिन्न तालिकाओं में डेटा की शुद्धता सुनिश्चित करने की चुनौतियों पर ध्यान नहीं दे रहे हैं। रखरखाव अद्यतनों को मुट्ठी भर के बजाय हज़ारों तालिकाओं पर लागू करने की आवश्यकता है।