作者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/cn.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