作者skitty (aki)
看板C_Sharp
標題[問題] 後端提升查詢的效能
時間Fri Dec 16 08:59:49 2016
我要寫一個功能是去讀網頁回傳的資料
再寫到資料庫裡
回傳給查詢者
資料量很大也常常需要更新
(類似商品庫存量一直變動)
目前卡在如果有新商品出現
我需要去檢查資料庫有沒有這個商品
來決定下insert或update
變成每個商品都要去連一次資料庫效能很差
目前有三個方向但不是很確定:
1. google說可以把指令串在一起一次執行
變成"比對…… insert……比對……update"
但這樣指令會變成很長一串字串
這樣算是好的解法?
而且如果商品名稱有 ' 出現
指令就不行了
2.每次都把資料庫舊資料砍掉
在記憶體生成新資料的table
再塞新資料進去
3.寫一支SP
但這樣每次還是要開資料庫連線
執行端是C#程式暫且在這裡發問
若覺得不恰當我再去DATABASE問 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.175.128
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1481849991.A.D29.html
1F:→ ssccg: 下insert或update時還不是要開連線,跟3有差?12/16 09:18
2F:→ ssccg: 你是用什麼DB? oracle有merge、mysql有on duplicate update12/16 09:22
3F:→ ssccg: postgre有on conflict update ...12/16 09:22
我是用mssql
查詢說寫SP好像可以快一咪咪
因為系統會先處理掉一些背景作業
※ 編輯: skitty (114.136.175.128), 12/16/2016 09:28:41
4F:→ ssccg: 我的意思是3哪有多開一次資料庫連線?12/16 10:11
6F:推 YahooTaiwan: 樓上正解12/16 13:33
謝謝CrazyAngel前輩
※ 編輯: skitty (114.136.175.128), 12/16/2016 14:58:56
7F:推 jackiechin: 直接update 後取得回傳值, 若為0則執行insert,本身不12/21 18:52
8F:→ jackiechin: 判斷資料是否存在 呢?12/21 18:52
不太懂
您是指直接下update指令嗎
※ 編輯: skitty (223.140.90.12), 12/21/2016 21:56:48
9F:推 Laluth: update回傳0(0個資料列有更新)=資料不存在=需要新增 12/22 21:33
10F:推 jackiechin: 對, 就是這樣, 少select一次。 剩下只是io問題 12/22 22:03