মাইএসকিউএল
আপনি যদি ক্লজটি ভুলে যান এবং সমস্ত শর্তটি অন মত প্রকাশের ক্ষেত্রে রাখেন তবে আপনি সেরা অভিনয়টি পাবেন।
আমি মনে করি এটি কারণ কোয়েরিতে প্রথমে টেবিলগুলিতে যোগদান করতে হবে এবং তারপরে যেখানে সেখানে ক্লজটি চালানো হয়, তাই আপনি যদি যোগ দিতে যা প্রয়োজন তা হ্রাস করতে পারেন তবে ফলাফলগুলি পেতে / udpate করার দ্রুততম উপায়।
উদাহরণ
দৃশ্যপট
আপনার ব্যবহারকারীর একটি টেবিল রয়েছে। তারা তাদের ব্যবহারকারীর নাম বা ইমেল বা অ্যাকাউন্ট_ নাম্বার ব্যবহার করে লগ ইন করতে পারে। এই অ্যাকাউন্টগুলি সক্রিয় হতে পারে (1) বা নিষ্ক্রিয় (0)। এই টেবিলটিতে 50000 সারি রয়েছে
তারপরে আপনার একসাথে অক্ষম করার জন্য ব্যবহারকারীর একটি টেবিল রয়েছে কারণ আপনি খুঁজে পেয়েছেন যে তারা সকলেই কিছু খারাপ করেছে। এই টেবিলটিতে ব্যবহারকারী নাম, ইমেল এবং অ্যাকাউন্ট নম্বর মিশ্রিত সহ একটি কলাম রয়েছে has এটিতে একটি "has_run" সূচকও রয়েছে যা এটি চালিত হওয়ার পরে 1 (সত্য) এ সেট করা দরকার
প্রশ্ন
UPDATE users User
INNER JOIN
blacklist_users BlacklistUser
ON
(
User.username = BlacklistUser.account_ref
OR
User.email = BlacklistedUser.account_ref
OR
User.phone_number = BlacklistUser.account_ref
AND
User.is_active = 1
AND
BlacklistUser.has_run = 0
)
SET
User.is_active = 0,
BlacklistUser.has_run = 1;
যুক্তি
আমাদের যদি কেবল ওআর শর্তে যোগদান করতে হয় তবে এটির জন্য প্রতিটি সারিটি অবশ্যই যুক্ত হওয়া উচিত কিনা তা দেখার জন্য অবশ্যই 4 বার পরীক্ষা করে দেখতে হবে এবং আরও অনেকগুলি সারি ফিরে আসতে পারে। তবে এটিকে আরও শর্ত দিয়ে এটি যোগ দেওয়ার সময় সমস্ত শর্ত পূরণ না করলে প্রচুর সারি "এড়িয়ে" যেতে পারে।
বোনাস
এটি আরও পঠনযোগ্য। সমস্ত শর্তগুলি এক জায়গায় এবং আপডেট করার জন্য সারিগুলি এক জায়গায়