[問題] 後端提升查詢的效能

看板C_Sharp作者 (aki)時間7年前 (2016/12/16 08:59), 7年前編輯推噓5(505)
留言10則, 5人參與, 最新討論串1/2 (看更多)
我要寫一個功能是去讀網頁回傳的資料 再寫到資料庫裡 回傳給查詢者 資料量很大也常常需要更新 (類似商品庫存量一直變動) 目前卡在如果有新商品出現 我需要去檢查資料庫有沒有這個商品 來決定下insert或update 變成每個商品都要去連一次資料庫效能很差 目前有三個方向但不是很確定: 1. google說可以把指令串在一起一次執行 變成"比對…… insert……比對……update" 但這樣指令會變成很長一串字串 這樣算是好的解法? 而且如果商品名稱有 ' 出現 指令就不行了 2.每次都把資料庫舊資料砍掉 在記憶體生成新資料的table 再塞新資料進去 3.寫一支SP 但這樣每次還是要開資料庫連線 執行端是C#程式暫且在這裡發問 若覺得不恰當我再去DATABASE問 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.175.128 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1481849991.A.D29.html

12/16 09:18, , 1F
下insert或update時還不是要開連線,跟3有差?
12/16 09:18, 1F

12/16 09:22, , 2F
你是用什麼DB? oracle有merge、mysql有on duplicate update
12/16 09:22, 2F

12/16 09:22, , 3F
postgre有on conflict update ...
12/16 09:22, 3F
我是用mssql 查詢說寫SP好像可以快一咪咪 因為系統會先處理掉一些背景作業 ※ 編輯: skitty (114.136.175.128), 12/16/2016 09:28:41

12/16 10:11, , 4F
我的意思是3哪有多開一次資料庫連線?
12/16 10:11, 4F

12/16 11:49, , 5F
https://goo.gl/x9JFXu mssql2008以後可以用merge
12/16 11:49, 5F

12/16 13:33, , 6F
樓上正解
12/16 13:33, 6F
謝謝CrazyAngel前輩 ※ 編輯: skitty (114.136.175.128), 12/16/2016 14:58:56

12/21 18:52, , 7F
直接update 後取得回傳值, 若為0則執行insert,本身不
12/21 18:52, 7F

12/21 18:52, , 8F
判斷資料是否存在 呢?
12/21 18:52, 8F
不太懂 您是指直接下update指令嗎 ※ 編輯: skitty (223.140.90.12), 12/21/2016 21:56:48

12/22 21:33, , 9F
update回傳0(0個資料列有更新)=資料不存在=需要新增
12/22 21:33, 9F

12/22 22:03, , 10F
對, 就是這樣, 少select一次。 剩下只是io問題
12/22 22:03, 10F
文章代碼(AID): #1OKpo7qf (C_Sharp)
文章代碼(AID): #1OKpo7qf (C_Sharp)