मुझे लगता है कि सबसे तेज़ समाधान है
select * from table where rand() <= .3
यही कारण है कि मुझे लगता है कि यह काम करना चाहिए।
- यह प्रत्येक पंक्ति के लिए एक यादृच्छिक संख्या बनाएगा। संख्या 0 और 1 के बीच है
- यह मूल्यांकन करता है कि क्या उस पंक्ति को प्रदर्शित करना है यदि उत्पन्न संख्या 0 और .3 (30%) के बीच है।
यह मानता है कि रैंड () एक समान वितरण में संख्याएँ उत्पन्न कर रहा है। ऐसा करने का यह सबसे तेज़ तरीका है।
मैंने देखा कि किसी ने उस समाधान की सिफारिश की थी और उन्हें बिना सबूत के गोली मार दी गई.. मैं उससे यही कहूंगा -
- यह O(n) है लेकिन किसी सॉर्टिंग की आवश्यकता नहीं है इसलिए यह O(n lg n) से तेज़ है
-
mysql प्रत्येक पंक्ति के लिए यादृच्छिक संख्याएँ उत्पन्न करने में बहुत सक्षम है। इसे आजमाएं -
INFORMATION_SCHEMA.TABLES सीमा 10 से रैंड () चुनें;
चूंकि विचाराधीन डेटाबेस mySQL है, यह सही समाधान है।