আমার কাছে একটি বড় টেবিলের কাছে এমন একটি ক্যোয়ারী রয়েছে যা দেখতে এই রকম দেখাচ্ছে:
declare @myIdParam int = 1
select *
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
এর মতো বেশ কয়েকটি অনুরূপ শর্ত রয়েছে যেখানে ক্লজ, এবং প্রচুর যোগ দেয়, তবে এটি একটি সংক্ষিপ্তসার।
কার্যকরভাবে, যদি @myIdParam শূন্য হয়, আমরা এই প্যারামিটারটি ব্যবহার করে ফলাফলগুলি সীমাবদ্ধ করতে চাই না।
আমি কোনও ডিবি সমর্থক নই, তবে আমার পরীক্ষাগুলি থেকে মনে হচ্ছে যে এই নাল চেকটি প্রতিটি রেকর্ডের জন্য করা হয়েছে এবং কোনওভাবেই অনুকূলিত করা হয়নি।
যদি আমি নাল চেকটি অপসারণ করি এবং ধরে নিই যে প্যারামিটারটি নাল নয়, তাত্ক্ষণিকভাবে কোয়েরিটি ফিরে আসে। অন্যথায়, এটি দশ সেকেন্ড পর্যন্ত সময় নেয়।
এটিকে কী অপ্টিমাইজ করার কোনও উপায় আছে যাতে চেকটি রানটাইমে একবারেই করা হয়?
OPTION(RECOMPILE)