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

作者: skitty (aki)   2016-12-16 08:59:49
我要寫一個功能是去讀網頁回傳的資料
再寫到資料庫裡
回傳給查詢者
資料量很大也常常需要更新
(類似商品庫存量一直變動)
目前卡在如果有新商品出現
我需要去檢查資料庫有沒有這個商品
來決定下insert或update
變成每個商品都要去連一次資料庫效能很差
目前有三個方向但不是很確定:
1. google說可以把指令串在一起一次執行
變成"比對…… insert……比對……update"
但這樣指令會變成很長一串字串
這樣算是好的解法?
而且如果商品名稱有 ' 出現
指令就不行了
2.每次都把資料庫舊資料砍掉
在記憶體生成新資料的table
再塞新資料進去
3.寫一支SP
但這樣每次還是要開資料庫連線
執行端是C#程式暫且在這裡發問
若覺得不恰當我再去DATABASE問 謝謝
作者: ssccg (23)   2016-12-16 09:18:00
下insert或update時還不是要開連線,跟3有差?你是用什麼DB? oracle有merge、mysql有on duplicate updatepostgre有on conflict update ...我的意思是3哪有多開一次資料庫連線?
作者: CrazyAngel (無口系天然呆)   2016-12-16 11:49:00
https://goo.gl/x9JFXu mssql2008以後可以用merge
作者: YahooTaiwan (超可愛南西我老婆)   2016-12-16 13:33:00
樓上正解
作者: jackiechin (jackiechin)   2016-12-21 18:52:00
直接update 後取得回傳值, 若為0則執行insert,本身不判斷資料是否存在 呢?
作者: Laluth (陽光)   2016-12-22 21:33:00
update回傳0(0個資料列有更新)=資料不存在=需要新增
作者: jackiechin (jackiechin)   2016-12-22 22:03:00
對, 就是這樣, 少select一次。 剩下只是io問題

Links booklink

Contact Us: admin [ a t ] ucptt.com