Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में विशिष्ट संख्या में रैंडम पंक्तियों को चुनने का सबसे कुशल तरीका? RAND() और LIMIT

रैंडम के लिए RAND() मेथड और रिकॉर्ड्स सीमित करने के लिए LIMIT मेथड का उपयोग करें।

टेबल बनाएं

mysql> create table DemoTable (
    -> Value int
    -> );
Query OK, 0 rows affected (0.54 sec)

रिकॉर्ड्स डालें

mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(300);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(600);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(700);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(1000);
Query OK, 1 row affected (0.15 sec)

सभी रिकॉर्ड्स देखें

mysql> select * from DemoTable;
+-------+
| Value |
+-------+
| 100   |
| 300   |
| 600   |
| 700   |
| 1000  |
+-------+
5 rows in set (0.00 sec)

रैंडम रिकॉर्ड्स के साथ विशिष्ट संख्या में पंक्तियां प्राप्त करने का क्वेरी

mysql> select * from DemoTable order by rand() limit 4;

आउटपुट (हर बार अलग हो सकता है):

+-------+
| Value |
+-------+
| 1000  |
| 600   |
| 100   |
| 700   |
+-------+
4 rows in set (0.00 sec)

प्रदर्शन नोट:

  • ORDER BY RAND() बड़ी टेबल्स पर धीमा होता है (पूरी टेबल स्कैन और सॉर्ट)
  • बड़ी टेबल्स के लिए: WHERE RAND() < (SELECT (4/COUNT(*)) FROM DemoTable) या ऑफसेट-आधारित दृष्टिकोण बेहतर हैं
  • छोटी टेबल्स (हजारों पंक्तियों तक) के लिए ORDER BY RAND() LIMIT n ठीक है
  1. - MySQL में सबक्वेरी और ORDER BY RAND से अंतिम 50 प्रविष्टियों में से 5 रैंडम पंक्तियाँ चुनें

    बड़ी टेबल से हाल की N पंक्तियों में से रैंडम नमूना लेने के लिए: पहले सबक्वेरी में ORDER BY id DESC LIMIT N से हाल की पंक्तियाँ लें, फिर बाहरी क्वेरी में ORDER BY RAND() LIMIT M लागू करें। टेबल बनाएं (केवल ID) mysql> CREATE TABLE DemoTable1853 ( UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY

  1. - MySQL में कॉमा-सेपरेटेड मान वाले कॉलम में विशिष्ट संख्या खोजकर रिकॉर्ड चुनें

    CONCAT() + LIKE कॉमा सेपरेटेड स्ट्रिंग में सटीक संख्या मिलान के लिए: select * from yourTableName where concat(,, yourColumnName, ,) like %,yourValue,%; उदाहरण insert into demo49 values(4,5,6,Adam), (5,3,2,Mike), (3,4,9,Bob); संख्या 4 खोजना select * from demo49 where concat(,, id, ,) like %,4,%;

  1. - डिफ़ॉल्ट MySQL पोर्ट नंबर क्या है? (3306)

    MySQL डिफ़ॉल्ट रूप से पोर्ट **3306** उपयोग करता है। पोर्ट 3306 विवरण MySQL प्रोटोकॉल द्वारा क्लाइंट और यूटिलिटी (mysqldump आदि) से कनेक्ट करने के लिए उपयोग। TCP (ट्रांसमिशन कंट्रोल प्रोटोकॉल)। सुरक्षा चिंताएं सामान्यतः पोर्ट 3306 **नहीं खोलना चाहिए** (सर्वर हमले के प्रति संवेदनशील हो सकता है)।