Gelin onun yerine size yeni bir teknik öğretelim.
Bu kodlari test etmeden yaziyorum direk buraya, herhangi bir hata varsa bildirin düzenleyeyim. Her halükarda tekniği anlamanıza yardımcı olacaktır.
Önce tablonuzda kaç adet satır var onu öğrenin.
// id diye bir PRIMARY KEY sütununuz var sayıyorum
$xAdet = mysqli_result(mysqli_query("SELECT COUNT(id) FROM tablo_adi"),0,0);Şimdi bu rakamdan çekmek istediğiniz veri adetinin 2 katını çıkarın. // bu rakam sayesinde ofsetiniz max satırı taşmayacaktir. $kalan = $xAdet - 20; // 10 adet için 20 çıkardık // 10 yerine 20 cikardim çünkü yakın zamanda silinmiş satırlar yüzünden atlanan ID rakamları olabilir. Ben şahsen ofseti geniş tutup tedbirli olmaktan yanayım.Verileri çekmeye başlayacağınız sütun IDsini rasgele belirleyin
$burdan = rand(0,$kalan);Sonra şu şekilde sorgulama yaptırın.
$sonuclar = mysqli_query("SELECT * FROM tablo_adi WHERE id > $burdan LIMIT 10");Bu rasgele veri çekmenin tek yolu değildir, en sağlıklı yoluda değildir, fakat performans bakımından en hızlısıdır çünkü PRIMARY KEY değerine sahip ID sütunları indexlenir.
LIMIT 512312,10 gibi teknikler kullanarak çekilen rasgele sorgularda mysql yine o 500bin küsür satırın üstünden geçecektir ve sayacaktır oraya geldiğini eğer index kullanmazsanız.
Sebep: mysql index değeri olan sütunlar için look up tabloları oluşturur.