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

एक शाब्दिक मूल्य के साथ बराबर (=) और IN के बीच प्रदर्शन अंतर

उन दो कथनों में कोई अंतर नहीं है, और अनुकूलक IN . को रूपांतरित कर देगा करने के लिए = जब IN इसमें सिर्फ एक तत्व है।

हालाँकि जब आपके पास इस तरह का कोई प्रश्न हो, तो बस दोनों कथन चलाएँ, उनकी निष्पादन योजना चलाएँ और अंतर देखें। यहां - आपको कोई नहीं मिलेगा।

ऑनलाइन बड़ी खोज के बाद, मुझे एक दस्तावेज़ मिला इसका समर्थन करने के लिए SQL पर (मुझे लगता है कि यह सभी DBMS पर लागू होता है):

यहाँ Oracle में दोनों प्रश्नों की निष्पादन योजना है (अधिकांश DBMS इसे समान रूप से संसाधित करेगा):

EXPLAIN PLAN FOR
select * from dim_employees t
where t.identity_number = '123456789'

Plan hash value: 2312174735
-----------------------------------------------------
| Id  | Operation                   | Name          |
-----------------------------------------------------
|   0 | SELECT STATEMENT            |               |
|   1 |  TABLE ACCESS BY INDEX ROWID| DIM_EMPLOYEES |
|   2 |   INDEX UNIQUE SCAN         | SYS_C0029838  |
-----------------------------------------------------

और IN() . के लिए :

EXPLAIN PLAN FOR
select * from dim_employees t
where t.identity_number in('123456789');

Plan hash value: 2312174735
-----------------------------------------------------
| Id  | Operation                   | Name          |
-----------------------------------------------------
|   0 | SELECT STATEMENT            |               |
|   1 |  TABLE ACCESS BY INDEX ROWID| DIM_EMPLOYEES |
|   2 |   INDEX UNIQUE SCAN         | SYS_C0029838  |
-----------------------------------------------------

जैसा कि आप देख सकते हैं, दोनों समान हैं। यह एक अनुक्रमित कॉलम पर है। अनइंडेक्स किए गए कॉलम के लिए भी यही होता है (सिर्फ पूरा टेबल स्कैन)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pdo निष्पादन में एक ही पैरामीटर मान को कई बार असाइन करना

  2. TIME_TO_SEC () उदाहरण – MySQL

  3. Mysqldump केवल कुछ उपसर्ग/Mysqldump वाइल्डकार्ड वाली तालिकाएँ?

  4. MySQL में बल्क इंसर्ट समस्या

  5. मैं इस सरणी संरचना को HTML रूप में कैसे बनाऊंगा?