इसलिए मेरे पास उपयोगकर्ता पसंदीदा की एक तालिका है। उनमें से कुछ मिलियन पंक्तियां हैं।डेटाबेस में पुन: प्रयोज्य वस्तुओं को संग्रहीत करने का कुशल तरीका
वर्तमान में, उनके पास केवल तीन कॉलम हैं: id
(पीके), userId
और someFkRef
। मुझे userId
पर एक इंडेक्स है जो मुझे उपयोगकर्ता के पसंदीदा चुनने की अनुमति देता है।
वर्तमान में इन्हें id
द्वारा आदेश दिया गया है जो प्रभावी रूप से केवल सम्मिलित क्रम है। हम उपयोगकर्ता को अपने पसंदीदा दोबारा ऑर्डर करने का मौका देना चाहते हैं, संभवतः किसी प्रकार के ड्रैग और ड्रॉप इंटरैक्शन के माध्यम से।
मेरी पहली (और मैं अनुभवहीन संदेह है) इस के लिए दृष्टिकोण बस, order
userId
पर एक order
स्तंभ और एक समग्र सूचकांक में जोड़ने के लिए किया जाएगा। हालांकि, प्रतिबिंब पर, जब उपयोगकर्ता सूची में कुछ आइटम ले जाता है, तो आइटम की प्रारंभ स्थिति और अंत स्थिति के बीच सभी मध्यवर्ती पंक्तियों को उनके order
कॉलम को फिर से गणना की आवश्यकता होगी और इसलिए सूचकांक भी।
यह (सबसे अधिक संभावना है) खराब है।
इससे पहले कि मैं कितनी बुरी मात्रा में मात्रा निर्धारित करने की कोशिश कर रहा हूं, मैं सोच रहा हूं कि बेहतर तालिका-आधारित प्रतिनिधित्व है जो ऊपर वर्णित संचालन के प्रकारों में हेरफेर करने के लिए सस्ता है।
मैं तुम्हें अनुक्रमणिका में नई क्षेत्र की जरूरत को समझाने नहीं कर रहा हूँ। –
आम तौर पर, 'ऑर्डर बाय' ऑप्स को इंडेक्स की आवश्यकता होती है, नहीं? – spender
आवश्यकता @spender नहीं है, लेकिन अपने तालिका पंक्तियों बड़े हैं और आप एक बड़े परिणाम सेट हो रही है, तरह एक सूचकांक का उपयोग कर काफ़ी कम आई/ओ उत्पन्न हो सकता है यदि। –