uysal_rockci adlı üyeden alıntı: mesajı görüntüle
Kayıt sayısı fazla olunca kaçınılmaz sorunlardan.

Aklıma direk üçkağıt geldi benim, ne de olsa random veri çekileceğinden sadece status kontrolü olduğuna göre , şöyle yapsanız olmaz mı.

Kafanıza göre 100 adet kayıt belirleyin. bunların ID 'lerini ister diziye atın, ister veritabanına kaydedin. bu 100 adet ID içinden seçiverin olsun bitsin
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