我正在尝试使用来自不同表中的列的数据更新表中的列。我的代码是:
UPDATE extlinks
INNER JOIN sp_board using (title)
SET extlinks.board_id = sp_board.id
我的问题如下:两个表都非常大(数百万行),我想如果我只合并必要的列,我可能能够加快更新速度。如何指定联接只应包含上述代码中的列?
这是由 RDBMS 如何实现关系代数来处理的。
简而言之,服务器只会“实现”所需的数量。这里没有问题,并且在 SQL 中说“仅在连接中包含 X 列”是没有意义的——这些列可以被认为不包括在内,除非以后需要它们(常见的情况是发送结果的 SELECT给客户)。在这种情况下,sp_board.id
实际上只需要该列。
但是,请注意 Rocket Hazmat 的评论 - 它围绕记录(而不是列)的物化 - 因为它提出了一个非常有趣的问题。我不知道答案是什么。