এক্সিকিউশন পরিকল্পনাগুলির প্রাথমিক পর্যালোচনা দেখায় যে 1/0
কম্পিউট স্কেলার অপারেটরগুলিতে এক্সপ্রেশনটি সংজ্ঞায়িত হয়েছে:
এখন, যদিও মৃত্যুদন্ড কার্যকর করার পরিকল্পনাগুলি বাম দিক থেকে চালানো শুরু করে, পুনরাবৃত্তভাবে ফোন করা Open
এবং GetRow
ফলাফলগুলি প্রত্যাবর্তনের জন্য শিশু পুনরাবৃত্তির পদ্ধতিগুলি, এসকিউএল সার্ভার 2005 এবং পরে একটি অপ্টিমাইজেশন রয়েছে যার দ্বারা এক্সপ্রেশনগুলি প্রায়শই কেবল একটি কম্পিউট স্কেলারের দ্বারা সংজ্ঞায়িত করা হয়, ততক্ষণ পর্যন্ত মূল্যায়ন স্থগিত করা হয় অপারেশন ফলাফল প্রয়োজন :
এই ক্ষেত্রে, ক্লায়েন্টে ফিরে আসার জন্য সারিটি একত্রিত করার সময় কেবলমাত্র অভিব্যক্তিটির ফলাফল প্রয়োজন (যা আপনি সবুজ SELECT
আইকনে ঘটতে ভাবতে পারেন )। এই যুক্তি দ্বারা, স্থগিত মূল্যায়নের অর্থ হল অভিব্যক্তিটি কখনই মূল্যায়ন করা হয় না কারণ কোনও পরিকল্পনাই কোনও রিটার্ন সারি তৈরি করে না। বিন্দুটি সামান্য পরিশ্রম করার জন্য, ক্লাস্টারড ইনডেক্স সিক বা টেবিল স্ক্যান উভয়ই একটি সারি ফেরত দেয় না, তাই ক্লায়েন্টের কাছে ফিরে আসার জন্য আর একত্রিত হওয়ার কোনও সারি নেই।
তবে, একটি পৃথক অপ্টিমাইজেশন রয়েছে যার মাধ্যমে কিছু অভিব্যক্তি রানটাইম ধ্রুবক হিসাবে চিহ্নিত করা যেতে পারে এবং ক্যোয়ারি এক্সিকিউশন শুরু হওয়ার আগে একবার মূল্যায়ন করা যায় । এই ক্ষেত্রে, এটির একটি ইঙ্গিতটি শোপলান এক্সএমএলে পাওয়া যাবে (ক্লাস্টারড ইনডেক্স বামদিকে পরিকল্পনা, ডানদিকে টেবিল স্ক্যান পরিকল্পনা):
অন্তর্নিহিত পদ্ধতিগুলি এবং তারা এই ব্লগ পোস্টে পারফরম্যান্সকে কীভাবে প্রভাবিত করতে পারে সে সম্পর্কে আমি আরও লিখেছি । সেখানে প্রদত্ত তথ্য ব্যবহার করে, আমরা প্রথম ক্যোয়ারীটি সংশোধন করতে পারি যাতে উভয় এক্সপ্রেশন কার্যকর করা শুরু হওয়ার আগেই মূল্যায়ন ও ক্যাশে করা হয়:
select 1/0 * CONVERT(integer, @@DBTS)
from #temp
where id = 1
select 1/0
from #temp2
where id = 1
এখন, প্রথম পরিকল্পনায় ধ্রুবক প্রকাশের রেফারেন্সও রয়েছে এবং উভয় প্রশ্নের ত্রুটি বার্তা উত্পন্ন করে। প্রথম প্রশ্নের জন্য এক্সএমএল রয়েছে:
আরও তথ্য: গণনা স্কেলারস, এক্সপ্রেশন এবং পারফরম্যান্স