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

MySQL में दो अलग-अलग कीज़ (Keys) पर खोज: OR vs UNION

दो अलग-अलग इंडेक्स्ड कॉलम (Keys) पर खोज करते समय, OR` की तुलना में `UNION` अक्सर बेहतर प्रदर्शन देता है क्योंकि यह प्रत्येक SELECT को अलग-अलग इंडेक्स उपयोग करने देता है।

तरीका 1: OR ऑपरेटर (कम अनुकूलित)

SELECT field1_index, field2_index 
FROM tableName 
WHERE field1_index = '1' OR field2_index = '1';

MySQL ऑप्टिमाइज़र कई बार `OR` वाले क्वेरी में इंडेक्स मर्ज (Index Merge) नहीं कर पाता, जिससे फुल टेबल स्कैन हो सकता है।

तरीका 2: UNION (अधिक अनुकूलित)

SELECT field1_index, field2_index FROM tableName WHERE field1_index = '1'
UNION
SELECT field1_index, field2_index FROM tableName WHERE field2_index = '1';

UNION (डिफ़ॉल्ट रूप से `UNION DISTINCT`) प्रत्येक भाग को स्वतंत्र रूप से 실행 करता है, जिससे दोनों इंडेक्स का पूरा उपयोग होता है। डुप्लिकेट पंक्तियाँ स्वचालित रूप से हटा दी जाती हैं।

कब कौन सा चुनें?

  • यदि दोनों कॉलम पर **कम्पोजिट इंडेक्स** है, तो `OR` या `IN` भी अच्छा काम कर सकता है।
  • अलग-अलग इंडेक्स होने पर `UNION` (या `UNION ALL` यदि डुप्लिकेट स्वीकार्य हैं) प्राथमिकता दें।
  • EXPLAIN प्लान देखकर वास्तविक प्रदर्शन जांचें।
  1. - MySQL क्वेरी: दो तिथियों की सीमा के बीच सभी डेटा चुनें

    BETWEEN ऑपरेटर का उपयोग करके तिथि सीमा के बीच डेटा चुनना दो तिथियों की सीमा के बीच सभी डेटा चुनने के लिए MySQL BETWEEN का उपयोग करें: select * from yourTableName where yourColumnName between yourDateValue1 and yourDateValue2; पहले टेबल बनाएं: create table DemoTable1422 ( EmployeeId int NOT NULL AUT

  1. - MySQL में दो टेबल पर एकल SELECT क्वेरी करना (कार्टेशियन उत्पाद)

    MySQL में दो टेबल पर कार्टेशियन उत्पाद (क्रॉस जॉइन) दो टेबल पर बिना जॉइन शर्त के SELECT करने से कार्टेशियन उत्पाद (क्रॉस जॉइन) उत्पन्न होता है: पहली टेबल की प्रत्येक पंक्ति दूसरी टेबल की प्रत्येक पंक्ति के साथ जुड़ती है। परिणाम पंक्तियाँ = पंक्तियाँ_टेबल1 × पंक्तियाँ_टेबल2। उदाहरण: दो असंबंधित टेबल

  1. - MySQL में MAX() और सबक्वेरी से दो कॉलम के योग का अधिकतम मान वाली पंक्ति चुनें

    दो कॉलम के योग का अधिकतम मान वाली पंक्ति ढूंढने के लिए सबक्वेरी में MAX(कॉलम1 + कॉलम2) का उपयोग करें। सिंटैक्स SELECT * FROM टेबल_नाम WHERE कॉलम1 + कॉलम2 = (SELECT MAX(कॉलम1 + कॉलम2) FROM टेबल_नाम); उदाहरण 1. टेबल बनाएं CREATE TABLE DemoTable1587 (Value1 INT, Value2 INT); 2. डेटा डालें INSERT