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

क्या WHERE क्लॉज में शर्तों का क्रम MySQL के प्रदर्शन को प्रभावित करता है?

यहां एक डेमो है WHERE क्लॉज शर्तों का क्रम दिखा रहा है कर सकते हैं शॉर्ट-सर्किटिंग के कारण फर्क पड़ता है। यह निम्नलिखित प्रश्नों को चलाता है:

-- query #1
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;

-- query #2
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;

इनके बीच एकमात्र अंतर OR . में ऑपरेंड के क्रम का है हालत।

myslowfunction जानबूझकर एक सेकंड के लिए सोता है और हर बार चलने पर लॉग टेबल में एक प्रविष्टि जोड़ने का दुष्प्रभाव होता है। दो प्रश्नों को चलाते समय जो लॉग किया गया है उसके परिणाम यहां दिए गए हैं:

myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4

उपरोक्त से पता चलता है कि एक धीमे कार्य को अधिक बार निष्पादित किया जाता है जब यह OR . के बाईं ओर दिखाई देता है वह स्थिति जब दूसरा ऑपरेंड हमेशा सत्य नहीं होता है।

तो आईएमओ इस सवाल का जवाब:

है "कभी-कभी यह कर सकता है।"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टेक्स्ट फ़ील्ड द्वारा समूहीकृत करते समय GROUP_CONCAT() पंक्ति गणना

  2. Laravel 5.4 अपग्रेड, utf8 से utf4mb में कनवर्ट करना

  3. क्या सिद्धांत में किसी फ़ील्ड के रूप में SQL फ़ंक्शन के परिणाम का उपयोग करना संभव है?

  4. त्रुटि 1038 सॉर्ट मेमोरी में कमी, सॉर्ट बफ़र आकार बढ़ाने पर विचार करें

  5. PHP के माध्यम से MySQL बल्क इंसर्ट