两张表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 添加索引。
您可以使用连接来做到这一点。但这仅在 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'
我写了以下更新
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 添加索引。
您可以使用连接来做到这一点。但这仅在 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'