两张表update的查询效率

Query efficiency in update with two tables

我写了以下更新

update menus_pages
set parent_page_id = (select pages.page_id from tb_pages pages where pages.name = 'ADM')
where page_id = (select pages.page_id from tb_pages pages where pages.name = 'CAL')

它运行良好但是....有更有效的方法来更新 SQLSERVER 上的 table?

谢谢

page_id和pages.name是主键吗?

如果不行,请尝试在 where 子句中使用主键。

如果您不能在 where 子句中使用主键,请为 page_id 和 pages.name 添加索引。

http://sql.sh/cours/index/create

您可以使用连接来做到这一点。但这仅在 tb_pages 中有 name = 'ADM' 的确切记录和 name = 'CAL' 的确切记录时才有效...(但您问题中的查询仅在这些下有效条件太)

UPDATE  mp
SET     mp.parent_page_id = ADM.page_id
FROM    menu_pages mp
        INNER JOIN tb_pages CAL
            ON mp.page_id = CAL.page_id
            AND CAL.name = 'CAL'
        INNER JOIN tb_pages ADM
            ON ADM.name = 'ADM'