শিরোনামের পরামর্শ অনুসারে ... আমি কোনও টেবিলে রেকর্ড রয়েছে কিনা তা নির্ধারণ করার জন্য সর্বনিম্ন ওভারহেড দিয়ে দ্রুততম উপায়টি বের করার চেষ্টা করছি।
নমুনা ক্যোয়ারী:
SELECT COUNT(*) FROM products WHERE products.id = ?;
vs
SELECT COUNT(products.id) FROM products WHERE products.id = ?;
vs
SELECT products.id FROM products WHERE products.id = ?;
বলুন যে ?
এটির সাথে অদলবদল হয়েছে 'TB100'
... প্রথম এবং দ্বিতীয় উভয় প্রশ্নেরই একই ফলাফলটি ফিরে আসবে (বলুন ... 1
এই কথোপকথনের জন্য)। শেষ ক্যোয়ারী 'TB100'
প্রত্যাশিত হিসাবে ফিরে আসবে, বা id
টেবিলে উপস্থিত না থাকলে কিছুই হবে না।
উদ্দেশ্যটি id
টেবিলে রয়েছে কিনা তা নির্ধারণ করা। যদি তা না হয় তবে প্রোগ্রামটি পরবর্তী রেকর্ডটি সন্নিবেশ করবে, যদি হয় তবে প্রোগ্রামটি এড়িয়ে যায় বা এই প্রশ্নের ক্ষেত্রের বাইরে অন্য প্রোগ্রাম লজিকের ভিত্তিতে একটি আপডেটের ক্যোয়ারী সম্পাদন করে।
কোনটি দ্রুত এবং কম ওভারহেড আছে? (এটি প্রতি প্রোগ্রাম চালুর জন্য কয়েক হাজার বার পুনরাবৃত্তি হবে, এবং দিনে বহুবার চালানো হবে)।
(জাভা থেকে এম $ সরবরাহিত জেডিবিসি ড্রাইভারের মাধ্যমে এম $ এসকিউএল সার্ভারের বিরুদ্ধে এই ক্যোয়ারী চালানো)
if exists(select null from products where id = @id)
; যদি কোনও ক্লায়েন্ট কর্তৃক সরাসরি জিজ্ঞাসা করা হয় select case when exists (...) then 1 else 0 end
।