MySQL
වගන්තිය අමතක වී සියලු කොන්දේසි ON ප්රකාශනයේ තැබුවහොත් ඔබට හොඳම කාර්ය සාධනය ලැබෙනු ඇත.
මම හිතන්නේ මෙය විමසුමට පළමුව වගු වලට සම්බන්ධ විය යුතු අතර පසුව එහි වගන්තිය ක්රියාත්මක වේ, එබැවින් ඔබට සම්බන්ධ වීමට අවශ්ය දේ අඩු කර ගත හැකි නම් එය ප්රති results ල ලබා ගැනීමට / udpate කිරීමට වේගවත්ම ක්රමයයි.
උදාහරණයක්
සිදුවීම
ඔබට පරිශීලකයින්ගේ වගුවක් ඇත. ඔවුන්ගේ පරිශීලක නාමය හෝ විද්යුත් තැපෑල හෝ ගිණුම් අංක භාවිතා කරමින් ඔවුන්ට ප්රවේශ විය හැකිය. මෙම ගිණුම් ක්රියාකාරී විය හැකිය (1) හෝ අක්රිය (0). මෙම වගුවේ පේළි 50000 ක් ඇත
එවිට ඔබට එකවර අක්රීය කිරීමට පරිශීලකයින්ගේ වගුවක් ඇත, මන්ද ඔවුන් සියල්ලන්ම නරක දෙයක් කර ඇති බව ඔබ සොයා ගන්නා බැවිනි. කෙසේ වෙතත්, මෙම වගුවේ පරිශීලක නාම, ඊමේල් සහ ගිණුම් අංක සමඟ එක් තීරුවක් ඇත. එය සතුව "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;
තර්කනය
අපට OR කොන්දේසි වලට සම්බන්ධ වීමට සිදුවුවහොත්, එය එක් එක් පේළියට සම්බන්ධ විය යුතුදැයි බැලීමට 4 වතාවක් පරීක්ෂා කර බැලිය යුතු අතර තවත් පේළි රාශියක් ආපසු ලබා දිය හැකිය. කෙසේ වෙතත්, එයට තවත් කොන්දේසි ලබා දීමෙන් එයට සම්බන්ධ වන විට සියලු කොන්දේසි සපුරා නොමැති නම් පේළි විශාල ප්රමාණයක් "මඟ හැරිය හැක".
පාරිතෝෂිකය
එය වඩාත් කියවිය හැකි ය. සියලුම කොන්දේසි එක තැනක වන අතර යාවත්කාලීන කළ යුතු පේළි එක තැනක තිබේ