首页 新闻 会员 周边 捐助

关于sql server 判断数据是否存在,如果存在,修改,否则就插入

0
[已解决问题] 解决于 2019-01-09 11:42

我数据库有两个表,一个是主表,一个相当于子表,是多对1的关系。主表中的数据是不重复的,子表中的数据每天不重复(每天大概插入数据55万条)。我原来的思路是判断主表中的数据是否存在,如果存在就把id拿出来跟子表的关联。如果不存在,就主表和子表insert数据。但是主表的数据已经320万条了,一次性拿到内存中,内存会溢出的。另外一种就是每次循环去读数据库,发现每天要取查55万次数据库,这样会对数据库造成很大的压力,速度就更不用说。存储过程是可以用,但是也是要判断数据是否存在的。就不知道存储过程能好多少,或者大家有什么好的建议,谢谢大家。

最佳解决方案的主页 最佳解决方案 | 初学一级 | 园豆:25
提问于:2018-01-03 19:49
< >
分享
最佳答案
0

320万的数据并不多,判断一条数据效率并不低啊,要我的解决方法就是把主表主键和判断条件条件存到内存里面,内存也使用不了多少,实在不行就分段分服务器存,然后加个锁!

奖励园豆:5
PingMac | 初学一级 |园豆:32 | 2018-01-03 21:08
其他回答(4)
0

550000 /24 /3600 = 6 次/秒,我就笑笑不说话。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-01-03 21:14

爱编程的大叔,你这是什么意思嘛?

支持(0) 反对(0) 最佳解决方案 | 园豆:25 (初学一级) | 2018-01-03 21:26
0

320万条记录中判断某个数据是否存在,能有多慢?有啥压力?

西漠以西 | 园豆:1675 (小虾三级) | 2018-01-04 09:41
0

你想的问题的方法很奇怪.并且你的问题也没讲清楚.

但是就你的题目来说回答是:merge into 命令

吴瑞祥 | 园豆:29449 (高人七级) | 2018-01-04 10:09
0

加个unique的索引直接插啊,插进去了你好我也好,插不进去报错就拉倒咯。

别把db想的太脆弱了,我这边有个服务下面挂的mysql,正常压力下查询qps都在10k/s,最高时候上到过30k/s,一个master支撑所有query,slave仅作为backup,不提供查询。

Daniel Cai | 园豆:10424 (专家六级) | 2018-01-04 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册