Arkadaşlar,
Online kullanıcı ve kayıt sayısı çok olan bir tablodan rastgele atıyorum 20 kayıt getirmek için mysql rand fonksiyonu haliyle db'ye takla attırıyor. Php ile yada mysql ile alternatif yöntemlerinizi yazabilir misiniz ?
Mysql rand için alternatif
6
●605
- 11-03-2014, 13:42:41Başıma geldiği için biliyorum db'ye gerçekten takla attırır. Size tavsiyem mysql_data_seek kullanın. Random değerler ile aşağı yukarı gezip dilediğiniz kadar çekersiniz.
- 11-03-2014, 13:44:42bu konu hakkında Türkçe bir makale var mı acaba?Met adlı üyeden alıntı: mesajı görüntüle
- 11-03-2014, 22:45:24Kayıt sayısı az ise performans iyidir.
Tablo 1-2 stundan oluşuyorsa performans iyidir.
$sonuc_q=mysql_query("select * from tablo order by rand() limit 20"); while($sonuc = mysql_fetch_assoc($sonuc_q)){ $sonuclar[] = $sonuc; } print_r($sonuclar);--------------------
Kayıt sayısı çok ve tabloda stun sayısı fazla ise çok daha iyidir. Burda stun sayısı çok önemli 10-15 stun olan bir tabloda inanılmaz fark yaşarsınız. Aynı zamanda birleşik tablolarda rand kullanmak yerine bu sorgu daha performanslıdır.
$sonuc_q = mysql_query("select * from tablo where 1"); $toplam_kayit = mysql_num_rows($sonuc_q); for($i=0; $i<20; ++$i){ $random = rand(0,$toplam_kayit-1); mysql_data_seek($sonuc_q,$random); $sonuclar[] = mysql_fetch_assoc($sonuc_q); } print_r($sonuclar);