RAND()
. द्वारा ऑर्डर करने का कारण धीमा हो सकता है कि आप कुछ भी वापस करने से पहले डेटाबेस को वास्तव में पूरी तालिका को सॉर्ट करने के लिए मजबूर कर रहे हैं। केवल एक टेबल स्कैन में लोड को कम करना बहुत तेज़ है (यद्यपि अभी भी कुछ धीमा है)।
इसका मतलब है कि आप ऑर्डर देने से बचकर ही रास्ते का हिस्सा बन सकते हैं:
SELECT *
FROM my_table
WHERE RAND() < 0.1
ORDER BY RAND()
LIMIT 100
यह तालिका में सभी पंक्तियों में से लगभग 1% का चयन करेगा, उन्हें क्रमबद्ध करेगा और शीर्ष 100 लौटाएगा। बस ध्यान दें कि यहां मुख्य मुद्दा (साथ ही @ cmd के उत्तर के साथ) यह है कि आप सुनिश्चित नहीं हो सकते कि क्वेरी वापस आती है कुछ भी।
उपरोक्त दृष्टिकोण में एक संपूर्ण तालिका स्कैन शामिल होना चाहिए (यह तय करने के लिए कि कौन सी पंक्तियों का उपयोग करना है) इसके बाद लगभग 1% पंक्तियों का एक प्रकार होना चाहिए। यदि आपके पास बहुत सारी पंक्तियाँ हैं, तो आप उसके अनुसार प्रतिशत कम कर सकते हैं।