MERGE

Entity Framework 和 NHibernate 出現以後,不多再寫一些存儲過程或SQL 語句了,最近一個項目須要作一個數據同步的功能。須要將兩個表的數據作同步,即在同步的時候,增、刪、改都要同時操做,以前的作法無非用遊標一條一條的遍歷,而後比較再更新或者插入,最後再執行刪除。在開始這個任務的時候,總覺的應該有更好的方法,畢竟計算機技術又向前推動了好多年了,因而再網上一搜,果真不出所料,在SQL Server 2008 的時候,就引入一條新的SQL 命令:MERGE,瞬間感受技術太神奇了。之前一堆的代碼,如今只須要簡單的幾行就能快速的執行完畢,開發效率和執行效率都大大提高了。 下面就展現一下MERGE方法的強大:大數據

1 MERGE INTO [TCFG_CRMTargetHospital] AS T
2 USING @Hospital AS S
3 ON T.TIECompanyID=S.TIECompanyID
4 WHEN MATCHED
5 THEN UPDATE SET T.HosptalName=S.HosptalName,T.Locationlevel1=S.Locationlevel1,T.Locationlevel2=S.Locationlevel2
6 WHEN NOT MATCHED
7 THEN INSERT VALUES(S.TIECompanyID, S.HosptalName,N'',S.Locationlevel1,S.Locationlevel2,NULL,NULL,0)        
8 WHEN NOT MATCHED BY SOURCE
9 THEN  UPDATE SET T.IsObsolete=1 ;--DELETE;

其實,放眼看去,很是簡單的一套語法,就是先聲明,那個表是源表,那個表是目標表,而後分別執行UPDATE,INSERT, DELETE 語句,效率比本身寫邏輯提高不止一個數量及,特別是作大數據量表的時候,效率差別更加明顯。spa

很久沒有寫技術博客了,天天奔波於項目,老是給本身找藉口,之後要堅持寫一些技術東西了。code

相關文章
相關標籤/搜索