আমি একটি দীর্ঘ চলমান বিট যুক্তি দিয়ে কিছু পরীক্ষা চালিয়েছি, একই বিট কোডের সাথে (একটি দীর্ঘ নির্বাচনী বিবৃতি) একটি টেবিলের মূল্যবান ফাংশন এবং একটি সঞ্চিত পদ্ধতি এবং একটি সোজা এক্সইসি / নির্বাচন, এবং প্রত্যেকে একইভাবে সম্পাদিত হয়েছিল।
আমার মতে ফলাফলের সেটটি ফেরত দেওয়ার জন্য সর্বদা সঞ্চিত পদ্ধতির পরিবর্তে একটি সারণী মূল্যবান ফাংশন ব্যবহার করুন, কারণ এটি যুক্তিগুলিকে পরবর্তীকালে তাদের সাথে যুক্ত হওয়া প্রশ্নগুলিতে অনেক সহজ এবং পাঠযোগ্য করে তোলে এবং আপনাকে একই যুক্তি পুনরায় ব্যবহার করতে সক্ষম করে। খুব বেশি পারফরম্যান্সের হিট এড়াতে, প্রায়শই ফলটি সেটটি দ্রুত হতে ফাংশনটি ফিরিয়ে দিতে সক্ষম করতে আমি প্রায়শই "alচ্ছিক" প্যারামিটারগুলি (অর্থাত আপনি তাদের কাছে NULL পাস করতে পারেন) ব্যবহার করি:
CREATE FUNCTION dbo.getSitePermissions(@RegionID int, @optPersonID int, optSiteID int)
AS
RETURN
SELECT DISTINCT SiteID, PersonID
FROM dbo.SiteViewPermissions
WHERE (@optPersonID IS NULL OR @optPersonID = PersonID)
AND (@optSiteID IS NULL OR @optSiteID = SiteID)
AND @RegionID = RegionID
এই ফাংশনটি আপনি বিভিন্ন পরিস্থিতিতে ব্যবহার করতে পারেন এবং একটি দুর্দান্ত পারফরম্যান্স হিট করবেন না। আমি বিশ্বাস করি এটি পরে ফিল্টারিংয়ের চেয়ে আরও দক্ষ efficient
SELECT * FROM dbo.getSitePermissions(@RegionID) WHERE SiteID = 1
আমি এই কৌশলটি বেশ কয়েকটি ফাংশনে ব্যবহার করেছি, কখনও কখনও এই ধরণের "alচ্ছিক" পরামিতিগুলির দীর্ঘ তালিকা সহ।