pole.ws adlı üyeden alıntı: mesajı görüntüle
Aslında olur ama, bu 100 adet kayıtı kafaya göre nasıl belirleyeceğim Yine yavaş olacaktır. Arada silinmiş kayıtlar olmasaydı id numaraları içinden seçim kolay olurdu, ancak bu durumda kayıtlar arasında sıçramalar mevcut.



Bu arada cache işide çözüm değil. Hem ram kullanımı hem de cache içinde sorgu yapamamak sorun.



Şöyle bir kullanım deniyorum şimdi, sonucu buraya yazarım.



1 ile MAX(id) arasında rastgele bir sayı seçip, bu rastgele sayı ile sorguyu şu şekilde yapacağım:

SELECT sutun1 FROM tablo where status='0' and id>'$randid' LIMIT 1

Bu durumda ilgili id'nin karşılıksız olması durumunda en yakın değeri döndürecektir ve rand() ile kıyaslanınca daha hızlı olacaktır diye düşünüyorum.



--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 18:44:18 -->-> Daha önceki mesaj 18:37:18 --



Evet denedim ve sonuç mükemmel

Sorgu süresi 0.009 - 0.0012 s arası değişti.

İhtiyacı olabilecekler için:



SELECT sutun1 FROM tablo WHERE status = '0' and id>= FLOOR(1 + RAND() * (SELECT MAX(id) FROM tablo)) LIMIT 1

Güzel bir çözüm olmuş, ancak idler şöyle ise;
1-2-3-99-100-103-105 bu durumda sorguların neredeyse hepsinde 99 olan çıkar. Bunu da size hatırlatmam gerektiğini düşündüm.