Ini adalah penyortiran yang memperlambat Anda. Daripada mengurutkan secara acak, cukup pilih product_db.unique_id
secara acak
Dalam kueri Anda, ganti ORDER BY RAND()
dengan:
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
menggunakan >=
bukannya =
jika unique_id telah dihapus dari database. Hasil tidak acak seperti memesan dengan rand tetapi kueri akan dieksekusi lebih cepat. Jika mau, Anda dapat menjalankan beberapa kueri dengan =
sampai hasilnya ditemukan dan mungkin masih lebih cepat daripada menyortir semua hasil tersebut.
Dengan JOIN eksplisit akan menjadi:
SELECT product_db.image
FROM product_db
JOIN product_page ON product_db.unique_id = product_page.product_unique_id
WHERE product_page.page_id = 3
AND product_db.status = 'Online'
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
LIMIT 1