I am looking for a legjobb módja, hogy megkapd az előző és következő bejegyzések egy rekord nélkül fut teljes lekérdezést. Van egy teljesen megvalósított megoldás helyett, és szeretné tudni, hogy van-e jobb megközelítés, hogy ezt odakint.
Tegyük fel, hogy építünk egy weboldal egy fiktív zöldséges. Amellett, hogy a HTML-oldalak, minden héten, azt akarja, hogy közzéteszi az akciók az ő helyén. Azt akarja azokat az ajánlatokat, hogy tartózkodjon a tényleges adatbázis tábla, és a felhasználók, hogy képes rendezni az ajánlatokat három módon.
Minden elem is van, hogy egy részletes oldal, több, szöveges információk a megrendelésről és a „korábbi” és „next” gomb. Az „előző” és „következő” gombokkal kell mutatni, hogy a szomszédos bejegyzések függően válogatás a felhasználó választotta a listán .
alt szöveg http://www.pekkagaiser.com/stuff/Sort.gif?
Nyilvánvaló, hogy a „következő” gombot „Paradicsom, I. osztály” lehet „Alma, 1. osztály” az első példa, „körte, I. osztályú” a második, és egyik sem a harmadik.
A feladat a részletes leírást , hogy meghatározzák a következő és az előző tételek nélkül fut a lekérdezés minden alkalommal , a sorrend a lista, mint az egyetlen rendelkezésre álló információk (Mondjuk kap, hogy egy GET paraméter ?sort=offeroftheweek_price, és figyelmen kívül hagyja a biztonsági következmények) .
Nyilvánvaló, hogy csak múló az azonosítók a következő és az előző elemek, mint a paraméter az első megoldás, ami eszébe jut. Végtére is, mi már tudjuk, az azonosító ezen a ponton. De ez nem egy lehetőség van - ez is működne ez a leegyszerűsített példa, de nem sok a valós használati esetek.
A jelenlegi megközelítés én CMS használ valami, amit nevű „válogatás cache”. Ha egy lista van betöltve, azt tárolja a tételt pozíciók nyilvántartásait a táblát 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
Nyilvánvaló, hogy az itemsoszlop valóban lakott numerikus azonosítók.
A részletes oldal, most elérheti a megfelelő sortingcacherekordot, letölti az itemsoszlop, felrobban, keressük meg az aktuális elem azonosítója és visszatér az előző és a következő szomszéd.
array(current => Tomatoes,
next => Pears,
previous => null
);
Ez nyilvánvalóan költséges, munkák korlátozott rekordok száma csak teremt redundáns adatok, de tételezzük fel, hogy a valós világban, a lekérdezés, hogy megteremtse a listákat nagyon drága (ez), fut minden részletében nézet ki a kérdésre, és néhány caching van szükség.
Kérdéseim:
Gondolod, hogy ez egy jó gyakorlat, hogy megtudja, a szomszédos bejegyzések változtatására lekérdezés megrendeléseket?
Tudod jobb gyakorlatok a teljesítmény és az egyszerűség? Tud valamit, ami ezt teljesen elavult?
A programozás elmélet, van egy név erre a problémára?
A neve „Válogató cache” megfelelő és érthető, hogy ez a technika?
Vannak olyan elismert, közös mintákat, hogy megoldja ezt a problémát? Mit hívják?
Megjegyzés: A kérdésem nem kiépíteni a listából, vagy hogyan kell megjeleníteni a részletes nézetben. Ezek csak példák. A kérdésem az alapvető funkciókat meghatározásának szomszédok egy rekordot, amikor újra lekérdezés lehetetlen, és a leggyorsabb és legolcsóbb módja annak, hogy ott van.
Ha valami nem világos, kérem, hagyjon egy megjegyzést, és azt fogja tisztázni.
Kezdve a bounty - talán van még egy kis info erről odakint.














