
1 orzorzorzorz 2019-12-21 11:03:13 +08:00 建张临时表,把 id 插进去查完丢? |
2 w292614191 2019-12-21 11:28:46 +08:00 @orzorzorzorz 限制了参数个数啊,插到临时表 ??? |
3 arthas2234 2019-12-21 11:34:29 +08:00 @w292614191 #2 关联查询 |
4 w292614191 2019-12-21 11:36:17 +08:00 |
5 yuanchao 2019-12-21 11:45:11 +08:00 看具体场景,如果读比写多,那么考虑预热到缓存,批量查询的时候直接从缓存取 |
6 sazima 2019-12-21 12:10:28 +08:00 select * from table where id in (....2000) or id in (.......) or id in (...) |
7 sazima 2019-12-21 12:11:44 +08:00 随便想的, 没试过 |
8 eason1874 2019-12-21 12:11:59 +08:00 要么调大 SQL 限制,要么分批查询。 没有更好的方法,除非 ID 连续,那可以用比较条件。 |
9 QUIOA 2019-12-21 12:34:15 +08:00 via Android 你看看那些玩社工库的,,70E5 秒 |
11 love 2019-12-21 13:52:31 +08:00 via Android 你这个按 ID 分批来本身就是标准做法 |
12 uyhyygyug1234 2019-12-21 14:00:18 +08:00 |
13 ryuzaki113 2019-12-21 14:15:30 +08:00 根据 ID 来的话 不如 union all ? |
14 h123123h 2019-12-21 14:17:45 +08:00 为什么不用缓存~ |
15 jugelizi 2019-12-21 14:21:49 +08:00 实时性要求不高进缓存了 sql 亚历山大 |
16 silentstorm 2019-12-21 14:42:48 +08:00 via Android @w292614191 不一样的,多次查询大部分时间都消耗在数据库连接上面了 |
18 jie170601 OP |
20 forgottencoast 2019-12-21 17:45:16 +08:00 你这个 id 从哪里来的呀? 临时表可以用表变量来代替。 |
21 orzorzorzorz 2019-12-21 18:00:05 +08:00 可以一次 insert 批量数据的: ```sql insertintotable(id,column1) values (1, 'test1'), (2, 'test2'); ``` 这样一个连接就够了。 |
22 PopRain 2019-12-21 20:39:35 +08:00 @jie170601 join 的循环是数据库内部的操作,速度很快,你循环查询就要做网络发送-语句解析-执行计划分析(缓存)-查询数据-网络返回,整个过程很慢很慢(尤其是前后的网络通讯) |
23 Eann248 2019-12-22 17:12:32 +08:00 @orzorzorzorz insert 长度限制与 select 是一样的 |
24 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) |