यह वह छँटाई है जो आपको धीमा कर रही है। यादृच्छिक रूप से छाँटने के बजाय, बस एक यादृच्छिक product_db.unique_id
का चयन करें
अपनी क्वेरी में, ORDER BY RAND()
. को बदलें साथ:
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
>=
. का उपयोग करके =
. के बजाय यदि डेटाबेस से unique_id हटा दिया गया है। रैंड द्वारा ऑर्डर करने के परिणाम के रूप में यादृच्छिक नहीं है, लेकिन क्वेरी बहुत तेजी से निष्पादित होगी। यदि आप चाहें, तो आप =
. के साथ कई क्वेरी चला सकते हैं जब तक कोई परिणाम नहीं मिल जाता है और यह अभी भी उन सभी परिणामों को छांटने की तुलना में काफी तेज हो सकता है।
एक स्पष्ट जॉइन के साथ यह होगा:
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