為了感謝大家對我的支援,我現在將我整理的FAQ第二版for oracle共享出來。

gugu99發表於2007-11-30
為了感謝大家對我的支援,我現在將我整理的FAQ第二版for oracle共享出來。


一、SQL&PL SQL

怎麼樣大批次的更新資料而不影響正常業務

1、化整為零
一般情況下,如果需要對一個表進行大批次的更新的時候,由於涉及到的記錄數很多,所以可能需要花費的時間也就很長,這種情況下,還採用一個單獨的update 語句來更新的話,就會造成長時間的加鎖,影響到業務。
簡單的一個例子,如要更新im_user表中的非空ID為使用者表bmw_users中的ID,關聯欄位為im_user.login_id=bmw_users.nick,語句可以這樣寫
PHP code:


update im_user i set i
.id=(select id from bmw_users u

where i
.login_id=u.nick)

where i.id is not null;

.

這個語句可以更新到幾百萬記錄,當然,耗費時間可能需要1小時以上,對於im_user這樣被頻繁更新的表來說,肯定是不現實的,所以,該語句可以改寫為如下的PL/SQL塊。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-986927/,如需轉載,請註明出處,否則將追究法律責任。

相關文章