- ariews
- 2010-03-03
Sebenernya ini mah topik lama, pas dulu masih pake symfony, tapi masih lumayan lah, soalnya banyak yg belom tau.
Dulu di minta menampilkan data dari table yg diambil secara random, yg gw tau sih pake RAND(), cuman... di symfony gmn caranya? Setelah search ke forumnya (ke forumnya dulu kalo ada, baru ke oom gugel) nemu pernyataan yg baru gw tau, ternyata RAND() itu, kalo di pake di table yang banyak banget datanya, bisa bikin lemot!
Gw juga nemuin artikel yang bilang jangan pake RAND(), gw nemu artikel tadi dari halaman forum yang sama.
Karena penasaran, gw coba tanya oom gugel, salah satunya adalah diskusi di forum mysql nya sendiri.
Ini gw coba sendiri dengan table yg masih sedikit, (12 ribu data):
dengan
RAND()SELECT * FROM contents ORDER BY RAND() LIMIT 1hasilnya adalah:
0.3527 secdengan random(id) (random id ini hasil generate dari script)
SELECT * FROM contents WHERE id IN ($RAND) LIMIT 1,1hasilnya:
0.0209 sec$RAND ini gw bikin dengan php: $RAND = join(',', range(1,50));
heheh ya ya gw tau ini gak bagus, tapi cuman buat test ajayg ketiga gw ngikutin cara dari forum mysql itu.
SELECT t.id FROM contents t JOIN (SELECT(FLOOR(max(id) * rand())) as maxid FROM contents) as tt on t.id >= tt.maxid LIMIT 1hasilnya:
0.0071 sec
Yang ketiga itu ternyata jauh lebih cepet.
Thanks for the tip, bro.
Btw, blog nya keren! Khususnya bagian text-to-image. Tadi gw test-test. :)
Idenya keren!