大家都是怎么做批量查询的

2019-12-21 10:31:11 +08:00
 jie170601
最近做了个东西感觉很不舒服,特来取经。
数据库为 sqlserver,
要根据 3,4 千左右 id 批量查询数据库,
一开始用循环一个一个 id 查,效率慢的一逼,
后面用 in 查,速度提升肉眼可见,
但是遇到了 sqlserver 参数个数限制的问题,
一直没解决,后面只能每 2 千个分批 in 一次,
虽然能用但总感觉有更好的办法。
6334 次点击
所在节点    Java
24 条回复
orzorzorzorz
2019-12-21 18:00:05 +08:00
可以一次 insert 批量数据的:
```sql
insert into table (id, column1)
values
(1, 'test1'),
(2, 'test2');
```
这样一个连接就够了。
PopRain
2019-12-21 20:39:35 +08:00
@jie170601 join 的循环是数据库内部的操作,速度很快,你循环查询就要做网络发送-语句解析-执行计划分析(缓存)-查询数据-网络返回,整个过程很慢很慢(尤其是前后的网络通讯)
Eann248
2019-12-22 17:12:32 +08:00
@orzorzorzorz insert 长度限制与 select 是一样的
bjking2014
2019-12-25 14:09:06 +08:00
如果 in 参数只能放 2k 个,比如传了 5k 个参数,我的思路是
select .....in(n1,n2000)
union all
select .....in(n2001,n4000)
union all
select .....in(n4001,n5000)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX