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

MySQL में WHERE IN vs OR - प्रदर्शन तुलना और उदाहरण

MySQL में एकाधिक मानों के विरुद्ध फ़िल्टर करने के लिए IN() और OR दोनों का उपयोग किया जा सकता है, लेकिन IN() आमतौर पर बेहतर प्रदर्शन देता है क्योंकि यह इंडेक्स का उपयोग कर सकता है।

सिंटैक्स तुलना

-- IN() का उपयोग
SELECT * FROM table WHERE column IN (val1, val2, val3);

-- OR का उपयोग
SELECT * FROM table WHERE column = val1 OR column = val2 OR column = val3;

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE DemoTable711 (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (0.92 sec)

mysql> INSERT INTO DemoTable711 VALUES 
(100, 'Chris'), (101, 'Robert'), (102, 'Carol'), (103, 'Mike'), (104, 'Sam');
Query OK, 5 rows affected (0.15 sec)

2. IN() का उपयोग

mysql> SELECT * FROM DemoTable711 WHERE Id IN (101, 103, 104);
+------+--------+
| Id   | Name   |
+------+--------+
| 101  | Robert |
| 103  | Mike   |
| 104  | Sam    |
+------+--------+
3 rows in set (0.03 sec)

3. OR का उपयोग

mysql> SELECT * FROM DemoTable711 WHERE Id = 101 OR Id = 103 OR Id = 104;
+------+--------+
| Id   | Name   |
+------+--------+
| 101  | Robert |
| 103  | Mike   |
| 104  | Sam    |
+------+--------+
3 rows in set (0.00 sec)

प्रदर्शन अंतर

पहलूIN()OR
इंडेक्स उपयोग✅ अनुकूलित (रेंज ऑप्टिमाइज़र)❌ अक्सर पूर्ण टेबल स्कैन
पठनीयता✅ साफ, संक्षिप्त❌ लंबा, दोहराव वाला
रखरखाव✅ आसान❌ त्रुटि-प्रवण
मानों की संख्याहजारों तककुछ दर्जन तक व्यावहारिक

EXPLAIN के साथ विश्लेषण

mysql> EXPLAIN SELECT * FROM DemoTable711 WHERE Id IN (101, 103, 104);
-- type: range, key: PRIMARY, rows: 3

mysql> EXPLAIN SELECT * FROM DemoTable711 WHERE Id = 101 OR Id = 103 OR Id = 104;
-- type: ALL (पूर्ण स्कैन संभव), key: NULL

सर्वोत्तम अभ्यास

  • IN() प्राथमिकता दें स्थिर मान सूचियों के लिए
  • OR उपयोग करें जब शर्तें अलग-अलग कॉलम्स पर हों: WHERE col1 = 1 OR col2 = 2
  • बड़ी सूचियों (>1000) के लिए, अस्थायी टेबल या JOIN पर विचार करें
  • NOT IN के साथ NULL सावधानी लागू होती है

उपक्वेरी के साथ IN()

SELECT * FROM orders 
WHERE customer_id IN (SELECT id FROM customers WHERE country = 'India');

यह OR श्रृंखला से कहीं अधिक कुशल है।

  1. - MySQL स्टोर्ड प्रोसीजर में WHERE IN() क्लॉज का उपयोग कैसे करें?

    MySQL स्टोर्ड प्रोसीजर में डायनामिक WHERE IN() क्लॉज का उपयोग करने के लिए प्रिपेयर्ड स्टेटमेंट (Prepared Statements) का उपयोग करना पड़ता है, क्योंकि IN क्लॉज में सीधे पैरामीटर पास नहीं किया जा सकता। समस्या सीधे पैरामीटर उपयोग नहीं कर सकते: -- यह काम नहीं करेगा: SELECT * FROM table WHERE id IN (inpu

  1. - MySQL में WHERE क्लॉज में एकाधिक शर्तों के साथ UPDATE कैसे करें?

    MySQL में UPDATE स्टेटमेंट के WHERE क्लॉज में AND ऑपरेटर का उपयोग करके एकाधिक शर्तें निर्दिष्ट करके विशिष्ट पंक्तियों को अपडेट किया जा सकता है। सिंटैक्स UPDATE table_name SET column = value WHERE condition1 AND condition2 AND ...; उदाहरण तालिका बनाएं और डेटा डालें: mysql> CREATE TABLE DemoTable

  1. - MySQL में REGEXP का उपयोग करके डॉट और संख्या वाले रिकॉर्ड कैसे प्राप्त करें?

    MySQL में REGEXP का उपयोग करके डॉट और संख्याओं वाले पैटर्न (जैसे संस्करण संख्या) से मेल खाने वाले रिकॉर्ड प्राप्त किए जा सकते हैं। उदाहरण तालिका बनाएं: mysql> CREATE TABLE DemoTable (Version VARCHAR(20)); mysql> INSERT INTO DemoTable VALUES (1.0.0), (2.s6.9), (1.5.0); डेटा +---------+ | Vers