更新相對較大的表(〜7000萬行)的推薦方式是什麼,以便用ID爲的不同表替換外鍵列(間接鏈接當前鍵)?修改表中的每一行的最快方法
比方說,我有三個表:
Person
Id long,
Group_id long --> foreign key to Group table
Group
Id long
Device_id long --> foreign key to Device table
Device
Id long
我想更新Person
表有直接的外鍵Device
表,即:
Person
Id long,
Device_Id long --> foreign key to Device table
Device
Id long
查詢看起來像這樣:
-- replace Group_id with Device_id
update p from Person p
inner join Group g
on g.Id = p.Group_id
set p.Group_id = g.Device_id
我會冷杉放棄FK約束,然後重命名列。
- 這項工作?
- 有沒有更好的方法?
- 我可以加快速度嗎? (當這個查詢正在運行時,其他所有內容都將處於脫機狀態,服務器爲UPS備份,因此我想跳過任何事務更新)
我在SQL吮吸,LOL。但是「批次」評論實際上最有趣。如果我只是通過SSMS運行它,我相信它會在實際更新表之前創建一個巨大的事務,從而使整個事情變得緩慢並帶來一堆我想避免的磁盤空間。 – Lou
順便說一句,這最後一個鏈接是否適合你?我無法打開它。 – Lou
確實如此,您可以通過谷歌翻譯嘗試:http://translate.google.com/translate?sl=en&tl=fr&js=n&prev=_t&hl=zh-CN&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F% 2Fsqlblogcasts.com%2Fblogs%2Ftonyrogerson%2Farchive%2F2007%2F08%2F27%2Falter表拖放列 - 不 - 不回收-的空間最列了-IT-SA-元數據變化 - only.aspx – RichardTheKiwi