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
$rand = rand(1,1000000);
sizin sorgunuzun Select * FROM tablo WHERE id >= $rand LIMIT 1 böyle bir sorgudan farkı yok.
rastgele 10 tane çekmek isterseniz??
lucene solr gibi büyük veriler için yapılmış sistemleri kullanın, kayıt sayınız şu an 1 milyon yarın 2 milyon olur, net çözümler üretin..
iyi çalışmalar