Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

इस मैसकल सरल क्वेरी को कैसे अनुकूलित करें

OR स्थितियां जब एक ही फ़ील्ड या श्रेणी आधारित नहीं होती हैं (जैसे < , > , LIKE ) वास्तव में अनुक्रमित का लाभ उठाने के लिए MySQL की क्षमता को कम करता है; आप उन्हें अलग-अलग सरल लोगों में तोड़कर प्रश्नों को पुन:व्यवस्थित कर सकते हैं जिन्हें आप यूनियन कर सकते हैं। इसे इस तरह अलग करना MySQL को UNIONs के भीतर प्रत्येक क्वेरी की एक अलग अनुक्रमणिका का लाभ उठाने की अनुमति देता है

SELECT `u`.`user_id`, `c`.`company`
FROM `users` AS `u` LEFT JOIN `companies` AS `c` ON `c`.`user_id` = `u`.`user_id`
WHERE `u`.`user_id` = 'search_term' 
UNION DISTINCT 
SELECT `u`.`user_id`, `c`.`company`
FROM `users` AS `u` LEFT JOIN `companies` AS `c` ON `c`.`user_id` = `u`.`user_id`
WHERE `u`.`lname` LIKE 'search_term%'    
UNION DISTINCT 
SELECT `u`.`user_id`, `c`.`company`
FROM `users` AS `u` LEFT JOIN `companies` AS `c` ON `c`.`user_id` = `u`.`user_id`
WHERE `u`.`email` LIKE 'search_term%'
UNION DISTINCT 
SELECT `u`.`user_id`, `c`.`company`
FROM `users` AS `u` INNER JOIN `companies` AS `c` ON `c`.`user_id` = `u`.`user_id`
WHERE `c`.`company` LIKE 'search_termeo%'
;

साथ ही, ध्यान दें कि मैंने पिछले वाले के जॉइन को एक इनर में बदल दिया है क्योंकि बाएं जॉइन की दाहिनी ओर टेबल पर कोई भी शर्त (जो "उस टेबल से मैच के बिना नहीं है") मूल रूप से एक इनर जॉइन है।

UNION DISTINCT कई शर्तों को पूरा करने वाले रिकॉर्ड को दोहराने से रोकने के लिए उपयोग किया जाता है, हालांकि... यदि companies.company अद्वितीय नहीं है (अर्थात कंपनी आईडी 1 जिसे "ब्ला" कहा जाता है और कंपनी आईडी 12 को "ब्लाह" भी कहा जाता है) तो उन्हें भी विलय कर दिया जाएगा जहां वे आपकी मूल क्वेरी में नहीं होंगे; यदि यह एक संभावित समस्या है, तो प्रत्येक SELECT में company_id को शामिल करके भी इसका समाधान किया जा सकता है ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - सीमांकक से अलग किए गए आईडी वाले कॉलम को सामान्य कैसे करें

  2. SELECT . में उपनाम का पुन:उपयोग करना

  3. क्या सभी टेक्स्ट-आधारित फ़ील्ड के लिए जेनेरिक वर्चर (255) का उपयोग करने के नुकसान हैं?

  4. डॉकर कंटेनर में mysql पासवर्ड बदलें

  5. MacOS पर मैसकल शेल को अनइंस्टॉल कैसे करें