作者bear1005 (πBear)
看板Database
標題[SQL ] 取代語法導致系統空間不夠
時間Tue Jun 4 15:58:42 2013
各位前輩好,實在是求救無門
想再來這邊請教
因為我資料有780萬筆,我的語法取代跑一下就跟我說空間不足,
我空間預留有40GB還是不夠
這樣我應該怎麼改寫語法?
才可以有效的處理
TEST10M為表A
ODLINE為表B
要更新表A的欄位,從表B抓取資料,
(當表A的上分區、下車分區=表B的上下車分區名稱時,讓表A的linewkt欄位=表B的線座標)
我的取代語法如下
UPDATE[BUS10_new].[dbo].[test10M]
SET [BUS10_new].[dbo].[test10M].[linewkt] = [BUS10_new].[dbo].[ODLINE].[
線座標]
FROM [BUS10_new].[dbo].[ODLINE] WHERE ([BUS10_new].[dbo].[ODLINE].[上車
分區] = [BUS10_new].[dbo].[test10M].[上車交通分區名稱])
and([BUS10_new].[dbo].[ODLINE].[下車分區] = [BUS10_new].[dbo].[test10M].[下車
交通分區名稱])
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.128.187
→ iFEELing:undo(? 空間不夠。如果一次改很大一片的話 分小塊改看看 06/04 22:50
→ iFEELing:然後改完要COMMIT 06/04 22:50
→ bear1005:一次要它全跑780萬筆..但是我不太懂樓上所說的東西 06/04 23:14
→ iFEELing:如果你有開TRANSACTION 在COMMIT之前都有可能ROLLBACK 06/04 23:47
→ iFEELing:所以DBMS會保留你COMMIT前所有的變更記錄準備倒回用 06/04 23:47
→ iFEELing:也就是說你改的範圍越大 這預備倒回的保留區就越大 06/04 23:48
→ iFEELing:保留區空間不足=DBMS無法確保資料一致性=交易失敗 06/04 23:51