[问题] 后端提升查询的效能

楼主: 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