I see a lot of people being so very happy in the comments, and, well, I've tried to think long and hard about how to apply it to my current domain but was a bit at a loss... Maybe some practical examples can help?
I see a lot of people being so very happy in the comments, and, well, I've tried to think long and hard about how to apply it to my current domain but was a bit at a loss... Maybe some practical examples can help?
Implicit in that sequence is transmitting the selected rows over the network, and buffering the rows in-memory on the client side.
With MERGE, you eliminate the network stress, and push the burden of managing the rows in-memory onto the postgres server.
That's quite nice if you have beefy operations and want to keep the services/jobs running those operations lean.
Before, you’d have to either load the data in the client side or duplicate the CTE across two statements in a transaction.
WITH results as (
SELECT ...
),
inserted_rows AS (
INSERT ...
SELECT * FROM results
...
),
deleted_rows AS (
DELETE ...
USING results
...
)
UPDATE ...
FROM resultsIt seems you’re knowledgeable on this, do you know if MERGE useful beyond expressivity?