मैं एसक्यूएल में कुछ प्रश्नों को चलाने के लिए सबसे अच्छा तरीका देखने के लिए हाल ही में अपना सर्वश्रेष्ठ प्रदर्शन कर रहा हूं जो संभावित रूप से कई अलग-अलग तरीकों से किया जा सकता है। मेरे शोध में, यह कहां काम करता है, इसकी अंतर्निहित अक्षमता के कारण, जहां अवधारणा में है, के लिए मुझे बहुत नफरत है।एसक्यूएल अद्यतन (सूची) या प्रत्येक व्यक्तिगत रूप से अद्यतन करें?
जैसे: WHERE Col IN (val1, val2, val3)
मेरे वर्तमान परियोजना में, मैं डेटा के एक बड़े सेट पर एक अद्यतन कर रहा हूँ और सोच रहा हूँ जो निम्न में से अधिक कुशल है: (या एक बेहतर विकल्प मौजूद है या नहीं)
UPDATE table1 SET somecolumn = 'someVal' WHERE ID IN (id1, id2, id3 ....);
उपर्युक्त में, आईडी की सूची 1.5k आईडी तक हो सकती है।
वी.एस.
कोड में सभी आईडी के माध्यम से लूपिंग, और प्रत्येक के लिए निम्नलिखित कथन चल:
UPDATE table1 SET somecolumn = 'someVal' WHERE ID = 'theID';
अपने आप को करने के लिए
, यह अधिक तार्किक लगता है कि पूर्व बेहतर, तेज़ काम करेगा/वहाँ है, क्योंकि कम चलाने के लिए सवाल। उस ने कहा, मैं एसक्यूएल के इन और आउट के साथ 100% परिचित नहीं हूं और क्वेरी क्यूइंग कैसे काम करता है।
मुझे यह भी अनिश्चितता है कि डीबी पर टेबल लॉक और अन्य सामान्य प्रदर्शन के रूप में मित्रवत होगा।
सामान्य जानकारी अगर यह मदद करता है, तो मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर 2014 का उपयोग कर रहा हूं, और प्राथमिक विकास भाषा सी # है।
किसी भी मदद की बहुत सराहना की जाती है।
संपादित करें:
विकल्प 3:
UPDATE table1 SET somecolumn = 'someVal' WHERE ID IN (SELECT ID FROM @definedTable);
ऊपर में, @definedTable किसी SQL 'उपयोगकर्ता निर्धारित तालिका प्रकार', जहां डाटा के अंदर के माध्यम से के रूप में एक संग्रहीत प्रक्रिया के लिए (सी # में आता है) टाइप SqlDbType.Structured
लोग कैसे पहचान पत्र में आते हैं पूछ रहे हैं: आईडी के कोड में एक List<string>
में हैं, और फिर से पहले कोड में अन्य बातों के लिए उपयोग किया जाता एक संग्रहीत प्रक्रिया के लिए भेजा जा रहा है। वर्तमान में, आईडी संग्रहीत प्रक्रिया में केवल एक कॉलम (आईडी) के साथ 'उपयोगकर्ता-परिभाषित तालिका प्रकार' के रूप में आ रही है।
मैं उन्हें एक तालिका में होने सोचा कि id1, id2, id3, id4
आदि की तरह दिखता है एक चर
क्या आपने निष्पादन योजना को देखने का प्रयास किया है यदि दो प्रश्नों से तेज़ है? – Japongskie
आईडी 1, आईडी 2, आईडी 3 कहां से आ रहे हैं? कुछ व्यावहारिक मामलों में वे कुछ शर्त पर फ़िल्टरिंग के परिणामस्वरूप, दूसरी तालिका से आते हैं। सभ्य प्रदर्शन प्राप्त करने के लिए, इस मामले में आप उस तालिका के साथ जुड़ने से बेहतर होगा। –
आप इन आईडी को SQL में कैसे पास कर रहे हैं? क्या आपके पास अपने सी # कोड में मूल्यों की एक सूची है या क्या आप उन्हें किसी अन्य SQL क्वेरी के परिणामस्वरूप प्राप्त करते हैं? – DavidG