我在Postgres数据库中有一个包含消息的表。 当用户读取属于一起的消息或一组消息时,我收集消息ID,并在SELECT查询之后,将读取标志更新为TRUE。
所以这只是两个简单的查询,仍然是内存友好的。但我想知道是否可以通过组合SELECT
和UPDATE
查询来改进它?我使用PHP / PDO进行数据库访问。
答案 0 :(得分:1)
Postgres UPDATE
语句中有RETURNING
clause:
UPDATE msg_tbl
SET read = TRUE
WHERE msg_id = ?
RETURNING *;
但如果所有行实际需要 UPDATE
,那只是一种改进。如果某些人已经read = TRUE
导致空的更新结果比SELECT
更加昂贵,而单独的UPDATE
会增加WHERE read = FALSE
。