मैं सबसे अच्छा तरीका है एक पूर्ण जिज्ञासा चलाए बिना एक रिकार्ड के अगले और पिछले रिकॉर्ड को पुनः प्राप्त करने के लिए देख रहा हूँ। मैं जगह में एक पूरी तरह से लागू समाधान है, और पता करने के लिए क्या कोई बेहतर दृष्टिकोण इस बाहर करने के लिए कर रहे हैं कि क्या करना चाहते हैं।
मान लीजिए कि हम एक काल्पनिक फल बेचनेवाला के लिए एक वेब साइट का निर्माण कर रहे हैं। अपने HTML पृष्ठों के अलावा, हर हफ्ते, वह अपने साइट पर विशेष प्रस्तावों की सूची प्रकाशित करना चाहता है। वह एक वास्तविक डेटाबेस तालिका में रहते हैं उन प्रस्तावों चाहता है, और उन तीन तरीकों से प्रस्तावों को सॉर्ट करने में सक्षम होना चाहिए।
हर आइटम भी पिछले और अगले बटन प्रस्ताव पर अधिक, शाब्दिक जानकारी और के साथ एक विवरण पृष्ठ होना आवश्यक है। पिछले और अगले बटन पड़ोसी प्रविष्टियों को इंगित करने की जरूरत पर छँटाई उपयोगकर्ता सूची के लिए चुना था निर्भर करता है ।
वैकल्पिक पाठ http://www.pekkagaiser.com/stuff/Sort.gif?
जाहिर है, के लिए अगले बटन टमाटर, कक्षा मैं सेब, कक्षा 1 पहला उदाहरण में होना चाहिए था नाशपाती, वर्ग मैं द्वितीय और तृतीय में कोई भी में।
विस्तार को ध्यान में रखते काम है एक प्रश्न हर बार चलने के बिना अगले और पिछले आइटम निर्धारित करने के लिए , केवल उपलब्ध जानकारी के रूप में सूची की तरह आदेश के साथ (चलो कहते हैं कि हम किसी GET पैरामीटर के माध्यम से है कि प्राप्त करते हैं ?sort=offeroftheweek_price, और सुरक्षा के प्रभाव की अनदेखी) ।
जाहिर है, बस एक पैरामीटर के रूप में अगले और पिछले तत्व की आईडी गुजर पहला समाधान जो मन में आता है। सब के बाद, हम पहले से ही इस बिंदु पर आईडी पता है। लेकिन, यह यहाँ एक विकल्प नहीं है - यह इस सरल उदाहरण में मेरी असली दुनिया उपयोग के मामलों में से कई में काम करेगा, लेकिन नहीं।
मेरी सीएमएस में मेरे वर्तमान दृष्टिकोण कुछ मैं कैश छँटाई नाम है उपयोग कर रहा है। जब एक सूची भरी हुई है, मैं नाम के एक तालिका में रिकॉर्ड में आइटम पदों की दुकान sortingcache।
name (VARCHAR) items (TEXT)
offeroftheweek_unsorted Lettuce; Tomatoes; Apples I; Apples II; Pears
offeroftheweek_price Tomatoes;Pears;Apples I; Apples II; Lettuce
offeroftheweek_class_asc Apples II;Lettuce;Apples;Pears;Tomatoes
जाहिर है, itemsस्तंभ वास्तव में संख्यात्मक आईडी से भर जाता है।
विवरण पृष्ठ में, मैं अब उचित का उपयोग sortingcacheरिकॉर्ड, लाने itemsस्तंभ, और उसमें विस्फोट, वर्तमान आइटम आईडी के लिए खोज, और पिछले और अगले पड़ोसी लौट आते हैं।
array(current => Tomatoes,
next => Pears,
previous => null
);
यह स्पष्ट रूप से महंगा है, केवल रिकॉर्ड की एक सीमित संख्या के लिए काम करता है और अनावश्यक डेटा बनाता है, लेकिन मान लें कि असली दुनिया में हैं, सूची बनाने के लिए क्वेरी बहुत महंगा है (यह है), हर विस्तार दृश्य में चल रहा से बाहर है सवाल है, और कुछ कैशिंग की जरूरत है।
मेरे सवाल:
क्या आपको लगता है कि इस प्रश्न के आदेश बदलती के लिए पड़ोसी रिकॉर्ड पता लगाने के लिए एक अच्छा अभ्यास है?
आप प्रदर्शन और सादगी के मामले में बेहतर प्रथाओं को जानते हो? आप कुछ है कि यह पूरी तरह से अप्रचलित बनाता है पता है?
प्रोग्रामिंग सिद्धांत रूप में, इस समस्या के लिए एक नाम है?
नाम छंटाई कैश उचित और इस तकनीक के लिए समझा जा सकता है है?
वहाँ किसी भी मान्यता प्राप्त, आम इस समस्या को हल करने के लिए पैटर्न हैं? वे क्या कहलाते हैं?
नोट: मेरा प्रश्न सूची निर्माण, या कैसे विवरण दृश्य प्रदर्शित करने के लिए के बारे में नहीं है। उन सिर्फ उदाहरण हैं। मेरा प्रश्न है बुनियादी कार्यक्षमता एक रिकार्ड के पड़ोसियों का निर्धारण करने के लिए जब एक फिर से क्वेरी असंभव है की, और सबसे तेज और सबसे सस्ता तरीका है वहाँ पाने के।
अगर कुछ स्पष्ट नहीं है, एक टिप्पणी छोड़ और मैं स्पष्ट करेगा।
एक इनाम शुरू - हो सकता है वहाँ इस पर कुछ अधिक जानकारी बाहर नहीं है।














