Tentang Query Random

Sebenarnya tema optimasi ini tidak terbatas pada python/django aja sih, bisa bahasa apa pun. Kadangkala dalam sebuah project kita butuh untuk menampilkan data secara random, entah itu random user, random post maupun random-random lainnya. Jika data masih sedikit (< 50k rows) mungkin tidak terlalu masalah, namun akan menjadi masalah kalau data sudah di atas 50.000 baris dengan model relasi yang cukup kompleks. Bagaimana cara yang efisien?

Saya sendiri membandingkan di antara 2 query berikut (contoh menggunakan query di django):

import random

from myapp import DataModel

data = DataModel.objects.filter(published=True)
random_data = random.choice(data)

bandingkan dengan query berikut (lebih ringan):

import random

from myapp import DataModel

data = DataModel.objects.filter(published=True)
random_data = data.filter(id=random.randint(0, data.count()))

Hasilnya jauh lebih efisien query kedua, kalau mau lebih efisien, object data_count bisa di hardcode.

Query Menentukan Prestasi!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s