মার্ক ইঙ্গিত হিসাবে, আপনি পারফরম্যান্স পার্থক্য সন্ধান করতে কঠোর চাপ দেওয়া হবে; আমি মনে করি অন্যান্য কারণগুলি আরও গুরুত্বপূর্ণ হবে। আমার জন্য, আমি সর্বদা COALESCE ব্যবহার করি এবং এর বেশিরভাগটি ইতিমধ্যে আপনার বা মার্ক দ্বারা উল্লেখ করা হয়েছে:
- COALESCE এএনএসআই মান। আমি আমার কোডটি পোর্ট করতে যাচ্ছি কিনা তা নিয়ে আমার চিন্তিত হওয়া আরও একটি কম বিষয়। আমার পক্ষে ব্যক্তিগতভাবে এটি তাত্পর্যপূর্ণ নয়, কারণ আমি জানি যে সেল্কোর শ্রেণিকক্ষের জগতের বাইরে এই জাতীয় বন্দরগুলি আসলে কখনই ঘটে থাকে, তবে কিছু লোকের পক্ষে এটি একটি সুবিধা।
- আপনি পাঠযোগ্যতা সম্পর্কে কি বলেন পক্ষান্তরে আমি এটা হতে পারে এটি কঠিন বিশেষত ব্যবহারকারীদের অন্যান্য ভাষায় বা প্ল্যাটফর্মের যেখানে ISNULL একটি বুলিয়ান (যা SQL সার্ভার বিদ্যমান নেই) ফেরৎ থেকে আসার জন্য ISNULL পড়তে। মঞ্জুর, COALESCE বানান কঠিন, কিন্তু কমপক্ষে এটি ভুল অনুমানের দিকে পরিচালিত করে না।
- COALESCE অনেক বেশি নমনীয়, যেমন আমি বলতে পারি COALESCE (a, b, c, d) যদিও ISNULL এর সাথে একই জিনিস অর্জনের জন্য আমাকে অনেক বাসা বাঁধতে হয়েছিল।
আপনার যদি নিশ্চিত হওয়া উচিত যে আপনি যদি ডেটা টাইপ অগ্রাধিকার দুটি ফাংশন ব্যবহার করে পরিচালনা করেন তবে আপনি যদি এটি বিভিন্ন ডেটা টাইপ / স্পষ্টতা ইত্যাদি ব্যবহার করে থাকেন তবে আপনি সচেতন ছিলেন are
বিঃদ্রঃ
একটি ব্যতিক্রম আছে। এসকিউএল সার্ভারের বর্তমান সংস্করণগুলিতে এগুলি আলাদাভাবে পরিচালনা করা হয়:
SELECT COALESCE((SELECT some_aggregate_query),0);
SELECT ISNULL((SELECT some_aggregate_query),0);
COALESCE
বৈকল্পিক আসলে চালানো হবে some_aggregate_query
(মান চেক করতে একবার, এবং একদা এটিকে ফিরতে যখন নন-জিরো) দুইবার, যখন ISNULL
শুধুমাত্র subquery একবার চালানো হবে। আমি এখানে কয়েকটি অন্যান্য পার্থক্য সম্পর্কে কথা বলি:
COALESCE
কোয়েরিতে দুটিবার মূল্যায়ন হয়।