उन दो कथनों में कोई अंतर नहीं है, और अनुकूलक 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 |
-----------------------------------------------------
जैसा कि आप देख सकते हैं, दोनों समान हैं। यह एक अनुक्रमित कॉलम पर है। अनइंडेक्स किए गए कॉलम के लिए भी यही होता है (सिर्फ पूरा टेबल स्कैन)।