senin sorgun zaten direk ofsayt hocam. sen her sorguda tüm satırları mysql den çağırım php de bir değişkene atıyorsun sonra php ile sayıyorsun. her sayfa çalıştığında veritabanındaki tüm etiketler sorgulanıp php de değişkene atanıyor büyük kaynak israfı ve acemilik.

Arkadaşların yukarıda yazdığı gibi mysql sorgunu tüm satırları getir diye değil select count() ile satır sayısını getir diye sorabilirsin. Eğer etiket adedin yüzbinler milyonlara dayandıysa bunun da yerine şöyle bir şey yapabilirsin. 2 ilyon etiketli bir sitemde gayet iyi performans veriyordu. ama etiket adedin çok fazla ise ve etiketlerin devamlılığı varsa yani aralarında silinmiş satır sayısı az ise bunu kullanabilirsin.

en yormayacak iş
SELECT id FROM tag ORDER BY id DESC LIMIT 1
diye sorgulat.
En sonuncu id numarasını basitçe hafif bir sorgu ile öğren.
Bu sonuç 25325 ise şöye bir döngü kur

for($i=0; $i < 25325; $i+200){
$link = 'etiket.php?id='$i;
}

etiket.php sinde de gelen id den sonraki 200 kayıtı listeletecek bir sorgu koyarsın.


Bu sayede her sayfa çalıştığında tüm satırlar sorgulanmaz, ya da tüm satır sayısı sayılmaz, son eklenen etiket satırı kolayca çağrılır ve onun id değerine göre sayfalama yapılır.

Bunun tek dezavantajı eğer aralarda boş ya da silinmiş kayıtlar varsa sayfalama sırasındaki her sayfada eşit sayıda etiket olmaz. Eğer kayıtların aralarında silinmiş etiketler ya da boşluklar varsa o sayfalardaki etiket sayısı az olur ya da 200 den büyük boşluk varsa hiç etiket olmayan bazı sayfalar da çıkabilir.