[MSSQL]搭配TempTable While vs Cursor分別做1,000,000資料逐筆新增的效能測試

  • 2933
  • 0
  • SQL
  • 2020-01-30

本範例刻意將很簡單的Insert into Select寫法,分別改成Temp Table While寫法(本文將其簡稱While寫法)與Cursor寫法,使用測試兩者的執行速度及效能。

兩者做的事情是一樣的:

  • 先於Employee資料表中產生1,000,000筆員工資料 (為了能明顯看出兩者效能差異)
  • Employee資料表(共4個欄位)中Sex = 'F' 的資料寫入Female資料表(共3個欄位)
...繼續閱讀 »

[SQL]於預存程序中使用「使用者定義資料表類型」進行多筆資料新增

  • 3026
  • 0
  • SQL
  • 2019-11-11

案例情境:當使用者於系統前端操作資料的新增時,資料會由WEB層進入AP層存取資料庫,來完成資料寫入的動作。單筆資料的新增,預存程序端可透過傳統的資料型別來接資料;但當前端資料來源為多筆資料時,傳統的做法會造成AP層至DB端的Connection次數過多,增加AP層存取資料庫的負荷量。因此可使用資料表類型的物件,將多筆資料以資料表的方式傳遞(TVP)給預存程序,來達到一次性的傳輸處理並回傳,減輕伺服器負擔。本範例為一個車輛資料表(CarType)的存取:透過預存程序SP_CAR_TYPE_INFO進行資料新增,其中輸入參數的型態為「使用者定義資料表類型」(DataInfo),於預存程序中進行逐筆資料的重複性檢查並寫入CarType資料表。

...繼續閱讀 »

[SQL]於預存程序中進行單筆及多筆交易資料的insert案例測試

案例情境:在開發實務上有時,需要使用呼叫預存程序A的方式來執行交易,當碰上多筆同時寫入的狀況,可以在設計一個新的預存程序B,來呼叫預存程序A,需考量例外拋回以及資料回復動作。本篇使用一個名為SP_Division的預存程序,來進行除法運算,並將結果寫入DivisionResult資料表,又設計另一個預存程序SP_Multi_Division來進行多筆的除法運算的處理。

...繼續閱讀 »