Ben tam sorgu akmayan bir kaydın sonraki ve önceki kayıtları almak için en iyi yol arıyorum. Ben yerinde tam uygulanan bir çözüm var ve orada bunu yapmak için daha iyi bir yaklaşım olup olmadığını bilmek istiyorum.
en bir hayali manav için bir web sitesi inşa ediyoruz diyelim. Onun HTML sayfaları yanı sıra, her hafta onun sitesinde özel teklifler bir listesini yayınlamak istiyor. O gerçek bir veritabanı tablosu ikamet için bu teklifi istiyor ve kullanıcıları üç şekilde teklifler sıralamak mümkün olmalıdır.
Her öğesi de teklif daha metinsel bilgiler ve önceki ve sonraki düğmeleri ile bir ayrıntı sayfası olması gerekiyor. Önceki ve sonraki düğmeleri komşu girişler yönlendirmesi gereken sıralama kullanıcı listesi için seçmişti bağlı .
alt metni http://www.pekkagaiser.com/stuff/Sort.gif?
Açıkçası, için sonraki düğmesi Domates, Sınıf I İlk örnekte, içinde Elmalar, sınıf 1 olmak zorundadır Armutlar, sınıf I üçüncü ikinci ve hiçbirinde.
Ayrıntı görünümünde görevdir bir sorgu her zaman çalıştırmadan sonraki ve önceki öğeleri belirlemek için kullanılabilir bilgi olarak listenin sıralama düzeninde ile, (en biz GET parametresi üzerinden olsun diyelim ?sort=offeroftheweek_priceve güvenlik sonuçlarını göz ardı) .
Açıkçası, sadece bir parametre olarak bir sonraki ve önceki elemanların kimliğini doğru akla gelen ilk çözümdür. Sonuçta, biz zaten bu noktada kimlikleri biliyorum. Ama, bu burada bir seçenek değildir - bu benim gerçek dünya kullanım durumları çoğunda bu basitleştirilmiş örnekte çalışır, ancak olmazdı.
Benim CMS Benim şu anki yaklaşımı ben önbellek sıralama adlı bir şeyi kullanıyor. Bir liste yüklendiğinde, ben adlı bir tablodaki kayıtları öğe pozisyonlarını saklamak 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
Açıkçası, itemskolon gerçekten Sayısal kimliklerin doldurulur.
Detay sayfasında, şimdi uygun erişmek sortingcachegetirme, kayıt items, o patlayacak, sütun geçerli öğe kimliği aramak ve önceki ve sonraki komşusu dönün.
array(current => Tomatoes,
next => Pears,
previous => null
);
Bu, listeleri oluşturmak için sorgu her detay görünümünde çalışan dışındaysa, (öyle) çok pahalı sadece kayıtların sınırlı sayıda çalışan ve gereksiz verileri oluşturur, ama gerçek dünyada varsayalım, besbelli pahalı soru ve bazı önbelleğe alma gereklidir.
Sorularım:
Bu sorgu emir değişen komşu kayıtları bulmak için iyi bir uygulama olduğunu düşünüyor musunuz?
Eğer performans ve basitlik açısından daha iyi uygulamaları biliyor musunuz? Bunun tamamen eskimiş kılan şey mi biliyorsun?
Programlama Teoride, bu sorun için bir isim var mı?
adı Sıralama önbellek Bu teknik için uygun ve anlaşılabilir mi?
Bu sorunu çözmek için herhangi bir tanınmış ortak düzen var? Onları nasıl çağırıyorlar?
Not: Benim sorum listesi oluşturuyor, ya da ne kadar ayrıntı görünümünü görüntülemek için ilgili değildir. Bunlar sadece örnektir. Benim sorum temel işlevi yeniden sorgu imkansız olduğunda kaydın komşularını belirleme ve oraya en hızlı ve ucuz yolu.
Net olmayan bir şey varsa, bir yorum bırakın ve ben netleştirecek ediniz.
Bir ödül başlayarak - belki orada bu konuda biraz daha bilgi orada bir yerde.














