UPDATE with JOIN in MySQL - Time & Space Complexity
When we update data in one table based on matching rows in another, itβs important to know how the work grows as data grows.
We want to understand how the time to complete the update changes when the tables get bigger.
Analyze the time complexity of the following code snippet.
UPDATE orders o
JOIN customers c ON o.customer_id = c.id
SET o.status = 'processed'
WHERE c.region = 'North';
This code updates the status of orders for customers in the 'North' region by joining the orders and customers tables.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Scanning and matching rows between the orders and customers tables using the JOIN condition.
- How many times: For each order row, the database looks for matching customer rows to check the region condition.
As the number of orders and customers grows, the database must check more rows to find matches.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 orders, 5 customers | About 10 checks to find matching customers |
| 100 orders, 50 customers | About 100 checks, each matching a customer |
| 1000 orders, 500 customers | About 1000 checks, matching customers as needed |
Pattern observation: The work grows roughly in proportion to the number of orders, assuming efficient customer lookup.
Time Complexity: O(n)
This means the time to update grows roughly in direct proportion to the number of rows in the orders table.
[X] Wrong: "The update will always take the same time no matter how many rows are in the tables."
[OK] Correct: More rows mean more matching checks, so the time grows with data size, not stays constant.
Understanding how joins affect update speed helps you explain database performance clearly and shows you know how data size impacts work.
"What if the customers table had no index on the id column? How would the time complexity change?"