我已经为我的缓存启用了SQL支持,并且在大型数据集上运行下面的查询。我不断收到警告信息-
警告:查询执行太长了 [duration=3625ms,type=MAP,distributedJoin=false,enforceJoinOrder=false,lazy=false,node=TcpDiscoveryNode 200,node=TcpDiscoveryNode] [id=e70cc42c-fae6-420d-87f1-8102e386b27a,consistentId=10.105.143.70,addrs=ArrayList 0:0:0:0:0:0:0:0:0:0:0:0: 0:0:0:0:0:0:0:1,10.105.143.70,127.0.0.1,sockAddrs=HashSet /10.105.143.70:47500,/0:0:0:0:0:0:0:1:47500,/127.0.0.1:47500,discPort=47500,order=1,intOrder=1,/127.0.0.1:47500,/127.0.0.1:47500,discPort=47500,order=1,intOrder=1ver=2.10.0#20210310-sha1:bc24f6ba,isClient=false],reqId=3,segment=0]
以下是我的疑问-
try (QueryCursor<List<?>> cur = cache2.query(new SqlFieldsQuery("select _key from table"))) {
for (List<?> r : cur) {
Long key = (Long)r.get(0);
}
}有时,低至200条记录需要50秒的时间(限制为200)。
有什么方法可以对此进行调优以使查询快速完成?
发布于 2021-11-30 11:19:50
尝试在您的SqlFieldsQuery上设置惰性模式:
try (QueryCursor<List<?>> cur = cache2.query(new SqlFieldsQuery("select _key from table").setLazy(true))) {
for (List<?> r : cur) {
Long key = (Long)r.get(0);
}}
https://stackoverflow.com/questions/70160514
复制相似问题