作者:
GoalBased (Artificail Intelligence)
2014-07-08 08:44:07資料庫名稱:mssql
資料庫版本:2012
內容/問題描述:
我有一個表單給使用者填寫 ex:
表單編號
5 鉛筆 10元
5 原子筆 15元
5 橡皮擦 20元
不過這個表單使用者是可以修改的,有可能使用者只是改了鉛筆的價格,
但也有可能是新增一個鉛筆盒 50元,又或者是把橡皮擦這筆資料刪掉,
這種狀況最簡單的做法單然是把表單編號5的資料全砍了,
之後新的表單資料再給予編號5,也有其他作法,例如用更新的,
想請問一下,這種狀況用甚麼做法比較好,優缺點又是甚麼?
作者:
bohei (run and fall)
2014-07-08 12:41:00我看不太懂你問題的核心是什麼@@純粹用UPDATE的最快吧? 先DELETE再INSERT等於兩次指令了你說的批次DELETE再INSERT的情況應該是適用於整個table要重新建立,可直接DROP,然後INSERT,最後再建立INDEX,省去逐筆INSERT還要排序INDEX的時間不知道你考慮要不要使用UPDATE的點在哪,因為直觀就是直接UPDATE吧,不妨把你顧慮的點說出來,可以討論討論使用者修改的表單會有一個TEMP做記錄嗎? 如果會的話,可以考慮將temp與實際資料的table做MERGE至於你提到的新資料要INSERT,這是一定要的阿~~~~但可以用UPDATE的就用UPDATE,可以省去重複DELETE,INSERT排INDEX的時間摟~再請問一下,你覺得整個DELETE再INSERT,這樣的程式碼可以應付所有情況,所以才偏向這樣的做法嗎XD那MERGE應該是最簡單又最快速(效能)的做法吧..自動幫你比對,條件符合(重複)使用UPDATE,無符合條件資料(新增)使用INSERT