বিশ্লেষণের সময় , এসকিউএল সার্ভার sqllang!DecodeCompOp
উপস্থিত তুলনা অপারেটরের ধরণ নির্ধারণ করতে কল করে:
অপ্টিমাইজারের কিছু জড়িত হওয়ার আগে এটি ভাল হয়।
তুলনা অপারেটর থেকে (লেনদেন-এসকিউএল)
একটি ডিবাগার এবং সর্বজনীন প্রতীক * ব্যবহার করে কোডটি সন্ধান করা, sqllang!DecodeCompOp
নিবন্ধে eax
** একটি মান প্রদান করে:
╔════╦══════╗
║ Op ║ Code ║
╠════╬══════╣
║ < ║ 1 ║
║ = ║ 2 ║
║ <= ║ 3 ║
║ !> ║ 3 ║
║ > ║ 4 ║
║ <> ║ 5 ║
║ != ║ 5 ║
║ >= ║ 6 ║
║ !< ║ 6 ║
╚════╩══════╝
!=
এবং <>
উভয়ই 5 ফেরত দেয়, সুতরাং পরবর্তী সমস্ত ক্রিয়াকলাপে (সংকলন এবং অপ্টিমাইজেশান সহ) আলাদা করা যায় না।
যদিও উপরের বিষয়টিতে গৌণ, তবুও এটি সম্ভব (উদাহরণস্বরূপ নথিভুক্ত ট্রেস পতাকা 8605 ব্যবহার করে) অপ্টিমাইজারের কাছে লজিক্যাল ট্রাকে পাস করা উভয়টি নিশ্চিত করার জন্য অপ্টিমাইজারে পাস হয়েছে !=
এবং <>
মানচিত্রটি ScaOp_Comp x_cmpNe
(সমান স্কেলার অপারেটরের তুলনা নয়)।
উদাহরণ স্বরূপ:
SELECT P.ProductID FROM Production.Product AS P
WHERE P.ProductID != 4
OPTION (QUERYTRACEON 3604, QUERYTRACEON 8605);
SELECT P.ProductID FROM Production.Product AS P
WHERE P.ProductID <> 4
OPTION (QUERYTRACEON 3604, QUERYTRACEON 8605);
উভয় উত্পাদন:
লগপপ_প্রজেক্ট কিউসিওএল: [পি] r উত্পাদক ID
LogOp_Select
লগঅপ_গীত টিবিএল: উত্পাদনের.পণ্য উত্পাদন (ওরফে টিবিএল: পি)
ScaOp_Comp x_cmpNe
ScaOp_Identifier QCOL: [P]। উত্পাদক
ScaOp_Const TI (int, ML = 4) XVAR (int, মালিকানাধীন নয়, মান = 4)
AncOp_PrjList
পাদটিকা
* আমি উইনডিবিজি ব্যবহার করি ; অন্যান্য ডিবাগারগুলি উপলব্ধ। সর্বজনীন প্রতীকগুলি সাধারণ মাইক্রোসফ্ট প্রতীক সার্ভারের মাধ্যমে উপলব্ধ। আরও তথ্যের জন্য, এসকিউএল সার্ভার গ্রাহক উপদেষ্টা টিম দ্বারা মিনিডাম্প এবং উইনডিবিজি-র সাথে এসকিউএল সার্ভার ডিবাগিং ব্যবহার করে এসকিউএল সার্ভারের আরও গভীরভাবে সন্ধান করুন - ক্লাউস আসচেনব্রেনারের পরিচিতি ।
** কোনও ক্রিয়াকলাপ থেকে রিটার্ন মানগুলির জন্য 32-বিট ইন্টেল ডেরাইভেটিভসে EAX ব্যবহার করা সাধারণ। অবশ্যই উইন 32 এবিআই সেভাবে এটি করে এবং আমি নিশ্চিত যে এটি পুরানো এমএস-ডস দিনগুলিতে ফিরে এসেছিল, যেখানে অক্ষ একই উদ্দেশ্যে ব্যবহৃত হয়েছিল - মাইকেল কেজারলিং