使用两个表更新查询效率

时间:2015-07-16 11:27:57

标签: sql-server updates

我写了以下更新

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上有更有效的方法来更新该表吗?

由于

2 个答案:

答案 0 :(得分:1)

你可以用连接来做到这一点。但是这只有在tb_pages中有一个记录名为name ='ADM'并且确切的一个记录名为='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'

答案 1 :(得分:0)

是page_id,pages.name是主键吗?

如果可以的话,如果没有尝试在where子句中使用主键。

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

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