Verimli bir Numaralandırma öğretici Öneri?

5 Cevap php

Ben mysql verileri döngüye var ve bu oldukça uzun bir liste var. Sayfalandırma yapmak için en etkili yolu nedir? Şu anda, bu bir bakıyorum: http://www.evolt.org/node/19340

Daha iyi bir tavsiye çekinmeyin, teşekkürler!

5 Cevap

- Yani Aksine makalesinde gibi DB her şeyi alma yerine, sadece aslında görüntüleyebilirsiniz satırları SEÇ olabilir. Sayfa başına 10 ürün varsa, sadece 10 seçin - ve sonra satır toplam tutarı seçilmesi. DB büyükse bu çok daha verimli bu iki sorgu olsa bile olabilir.

Sorin Mocanu dediğim gibi bazı kriterlere göre sonuç sipariş etmek istiyorsanız, belki daha sonra büyük bir performans ceza olacak sıralama, zaman ya da bazı frekansı değiştirilmiş. Eğer sadece 10 kayıtlarını ihtiyaç olsa emin endeksi kullanılmıştır ve doğru kullanıldığında yapmak sürece, hala, kayıtların hepsi (belki milyonlarca) sıralamak gerekir.

Here is an excellent article regarding pagination with mysql: http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf

Or from mysql website: http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html

Ben başlangıç ​​noktası olarak kitap Wicked serin PHP örneği kullanarak oldum. Çok düzgün ve iyi IMO açıkladı.

Sen gibi bir şey istiyorum

SELECT * FROM your_table WHERE condition = true ORDER BY some_field LIMIT 100, 10

Where 100 is the number of records to skip and 10 is the number of rows to retrieve. Make sure you have an index covering condition and the order criteria fields if you want to have the maximum performance.

Bu standart kütüphanenin bir parçası olarak sahip olmak gerçekten güzel bir fonksiyon / sınıftır. Ben kuvvetle bu satırlar boyunca kendi rulo tavsiye ederim:

  • Toplam ürün (satırlar) atlatmanın sorgula.
  • Çalışmak için kod üst & alt limit sayfa başına görüntülemek istediğiniz öğelerin sayısına dayalı.
  • İkinci sorgu göre LIMIT'ed.

Ben bazı kod göndermek istiyorum, ama bunun dışında eğlenceli alacaktı :)