Teknik possible, ben bu özelliği ile zaman kaybetmeyin ve başka bir yaklaşım aramak için değil tavsiye ediyorum iken.
İlk olarak, pagination hakkında bazı arka plan bilgileri. Numaralandırma, tipik olarak ORDER BY ... LIMIT [offset], [rows]
kullanılarak gerçekleştirilir. MySQL de size satırları verebilmek için bir ofset verilmiş, bu all önceki satırlar sonra onları çöpe atmak okumalıdır. Bu pahalı ve ofset ile maliyet artışları artan. (Örneğin SINIR 1000, 20 1020 satırları okumak ve sonra uzak 1000 atmak gerekir). ORDER BY bir dizin kullanılarak başarılı olamaz zaman bu daha da kötüdür. Bu entire sınırsız resultset okunan neden olabilir, daha sonra filesorted ve then ilk 1000 satır bir LIMIT 1000, 20
karşılamak için atılır.
Şimdi, sizin belirli bir sorunu ele alalım. Gösterildiği gibi, sayfalama "sihirli" bir şey değildir; Bu resultsets paginating bir oldukça kaba kuvvet yoludur. Özellikle, bir şey tüm resultset bir sıralama yapmadan vaktinden düşer hangi sayfa bilmiyorum. Bu rakam için, geçici tablolar kullanmanız gerekir, ve sonra bu geçici tablodan tüm resultset'de için sayfa başına min / max hesaplamak istiyorum dk ve sayfa başına max. Veri tüm uçucu ise, o zaman sık sık temel veri değişiklikleri gibi bu yeniden hesaplamak gerekiyordu.
Depolama motoru nasılsa her satır belirli bir sipariş için ne oldu "sayfa" saklanan, o zaman nispeten kolayca bunu başarabilir. Ne yazık ki durum böyle değildir.
Ayrıca, ben senin kullanıcılara yaklaşımın faydasını sorgulamak istiyorum. Sizin örnek fiyatlarla güzel bir dağılım gösterir. Eğer aşağıdaki gibi bir aralıklar ile sona olmaz emin olabilir miyim?
<option value="1">Page 1 ($1,005,000 - $1,004,000)</option>
<option value="2">Page 2 ($1,004,000 - $1,003,450)</option>
<option value="3">Page 3 ($1,003,450 - $1,003,387)</option>
<option value="4">Page 4 ($1,003,387 - $1,003,342)</option>
Bu kullanıcıya hiçbir yararı olacağını soru.
Suggestion
- Lütfen pagination basit tutmak
- Kullanıcıların filtresi olarak inşa sonra, fiyatları bir dizi seçebilmek istiyorsanız - pagination ile birleştirmek değil.
Example
Amazon bir şey aramak ve sonuçları sayfasını fark. Eğer arama sonuçları sadece paginated alırsınız. Solda da ayrıntılandırabileceksiniz arama uygulamak için çeşitli filtreler olacaktır.