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

क्या सामान्य रूप से MySQL या SQL में BETWEEN और IN के बीच कोई प्रदर्शन अंतर है?

BETWEEN चाहिए बेहतर प्रदर्शन करें IN इस मामले में (लेकिन करें निष्पादन योजनाओं को भी मापें और जांचें!), विशेष रूप से n . के रूप में बढ़ता है और चूंकि आंकड़े अभी भी सटीक हैं। आइए मान लें:

  • m आपकी तालिका का आकार है
  • n आपकी सीमा का आकार है

इंडेक्स का उपयोग किया जा सकता है (n m . की तुलना में छोटा है )

  • सैद्धांतिक रूप से, BETWEEN प्राथमिक कुंजी अनुक्रमणिका पर एकल "रेंज स्कैन" (ओरेकल स्पीक) के साथ कार्यान्वित किया जा सकता है, और फिर अधिकतम n पर ट्रैवर्स किया जा सकता है इंडेक्स लीफ नोड्स। जटिलता O(n + log m) . होगी

  • IN आमतौर पर n . की एक श्रृंखला (लूप) के रूप में लागू किया जाता है प्राथमिक कुंजी अनुक्रमणिका पर "रेंज स्कैन"। m . के साथ तालिका का आकार होने के कारण, जटिलता हमेशा रहेगी O(n * log m) ... जो हमेशा बदतर होता है (बहुत छोटी तालिकाओं के लिए नगण्य m या बहुत छोटी रेंज n )

इंडेक्स का उपयोग नहीं किया जा सकता (n m . का एक महत्वपूर्ण हिस्सा है )

किसी भी स्थिति में, आप एक पूर्ण तालिका स्कैन प्राप्त करेंगे और प्रत्येक पंक्ति पर विधेय का मूल्यांकन करेंगे:

  • BETWEEN दो विधेय का मूल्यांकन करने की आवश्यकता है:एक निचले के लिए और एक ऊपरी सीमा के लिए। जटिलता O(m) . है

  • IN ज़्यादा से ज़्यादा n evaluate का मूल्यांकन करने की ज़रूरत है भविष्यवाणी करता है जटिलता है O(m * n) ... जो हमेशा बदतर होता है, या शायद O(m) यदि डेटाबेस IN . को ऑप्टिमाइज़ कर सकता है विधेय की सूची के बजाय हैशमैप की सूची बनाएं।



  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 घटना त्रुटि php . का उपयोग कर

  2. एसक्यूएल क्या है? एक डेटाबेस क्या है? रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स (RDBMS) को प्लेन इंग्लिश में समझाया गया।

  3. MySQL यूनिकोड शाब्दिक

  4. डेटाबेस संरचना सलाह की आवश्यकता

  5. एक MYSQL DB पर BLOB के रूप में संग्रहीत छवि को पुनः प्राप्त करें