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

MySQL में एक ही टेबल पर कई SELECT को IN() से ऑप्टिमाइज़ कैसे करें?

MySQL में IN() ऑपरेटर: कई SELECT को एक में संयोजित करना

जब आपको एक ही टेबल से अलग-अलग शर्तों के आधार पर कई बार डेटा लेना हो, तो प्रत्येक के लिए अलग SELECT चलाने के बजाय IN() ऑपरेटर का उपयोग करके एक ही क्वेरी में करें। यह नेटवर्क राउंड-ट्रिप और क्वेरी पार्सिंग ओवरहेड को कम करता है।

उदाहरण: उम्र 21, 22, 23 वाले लोगों के नाम

टेबल बनाएं:

CREATE TABLE DemoTable (
    Id INT,
    Name VARCHAR(100),
    Age INT
);

INSERT INTO DemoTable VALUES 
(1, 'Chris', 23), (2, 'David', 21), (3, 'Mike', 24), (4, 'Robert', 22);

अनुकूलित क्वेरी: IN() का उपयोग

SELECT Name FROM DemoTable WHERE Age IN (21, 22, 23);

परिणाम:

+--------+
| Name   |
+--------+
| Chris  |
| David  |
| Robert |
+--------+

तुलना: कई SELECT vs एक SELECT

-- खराब: 3 अलग-अलग क्वेरी (3 राउंड-ट्रिप)
SELECT Name FROM DemoTable WHERE Age = 21;
SELECT Name FROM DemoTable WHERE Age = 22;
SELECT Name FROM DemoTable WHERE Age = 23;

-- अच्छा: 1 क्वेरी (1 राउंड-ट्रिप)
SELECT Name FROM DemoTable WHERE Age IN (21, 22, 23);

प्रदर्शन लाभ

  • नेटवर्क: एक राउंड-ट्रिप बनाम कई
  • पार्सिंग: एक बार पार्स/ऑप्टिमाइज़ बनाम कई बार
  • इंडेक्स उपयोग: दोनों मामलों में इंडेक्स उपयोग समान
  • कैश: एक क्वेरी कैश के लिए बेहतर

बड़े IN() सूची के लिए सावधानी

यदि IN सूची बहुत बड़ी है (हजारों मान), तो:

  • अस्थायी टेबल बनाएं और JOIN करें
  • या VALUES ROW() कंस्ट्रक्टर के साथ JOIN करें (MySQL 8.0+)
-- बड़ी सूची के लिए अस्थायी टेबल दृष्टिकोण
CREATE TEMPORARY TABLE temp_ages (age INT);
INSERT INTO temp_ages VALUES (21), (22), (23), ...;
SELECT d.Name FROM DemoTable d JOIN temp_ages t ON d.Age = t.age;
  1. MySQL डेटाबेस में एक टेबल का बैकअप कैसे लें? MySQL डेटाबेस में एक टेबल का बैकअप कैसे लें?

    सिंगल टेबल का बैकअप लेने के लिए mysqldump यूटिलिटी का उपयोग करें। यह MySQL 5.0+ में मानक तरीका है। कमांड लाइन से बैकअप लें कमांड प्रॉम्प्ट खोलें (Win+R → cmd) MySQL के bin फोल्डर में जाएं: cd C:\Program Files\MySQL\MySQL Server 8.0\bin mysqldump चलाएं: E:\student.sql Enter password: ***********

  1. Java के साथ MySQL टेबल में केवल एक कॉलम कैसे इन्सर्ट करें? Java के साथ MySQL टेबल में केवल एक कॉलम कैसे इन्सर्ट करें?

    Java-MySQL कनेक्शन कोड में एक कॉलम इन्सर्ट करने के लिए INSERT INTO स्टेटमेंट का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.54 sec) MySQL टेबल में केवल एक कॉलम इन्सर्ट करने का जावा कोड यहाँ है। उदाहरण

  1. - MySQL में IS NULL से टेबल की एकल पंक्ति में किसी NULL मान की जांच कैसे करें?

    IS NULL ऑपरेटर WHERE col1 IS NULL OR col2 IS NULL किसी भी कॉलम NULL होने पर पंक्ति चुनता है। उदाहरण insert into demo86 values(null,null), (null,John), (David,Mike), (Sam,null); क्वेरी और परिणाम select * from demo86 where value1 is null or value2 is null; +--------+--------+ | value1 | value2 |