麦粉社区
>
建议征集
>
帖子详情

数据集查询超时,数据量不大但响应很慢

建议征集 发表于 3 天前
发表于 3 天前

Smartbi版本:V10


在数据集中写了一个SQL查询,数据量大概2万行,但执行时间需要40多秒。同样的SQL在数据库客户端执行只需要2秒。

发表于 3 天前
这个情况我在V10版本上也踩过坑。同样SQL在数据库客户端跑2秒,到SmartBI里要40多秒,大概率不是SQL本身的问题,而是 SmartBI数据集的执行机制 导致的。

排查思路(按优先级排序):
1. 检查数据集是否被“嵌套查询”包裹了
SmartBI在数据集的SQL外面,可能会自动套一层 SELECT * FROM (你的SQL) WHERE ... 的包装,尤其是在设置了行权限、数据过滤或者参数默认值的情况下。这样外层查询可能会丢失索引,导致性能骤降。

尝试解决:

在数据集SQL里,把过滤条件 直接写在子查询内部,而不是依赖SmartBI的外层过滤;

如果SQL里有参数,尽量用 /*+ hint */ 或把参数写死在SQL里测试一下,排除参数绑定导致的执行计划变化。

2. 检查SmartBI是否每次都在“全量拉取”数据到内存再计算
SmartBI的执行逻辑有时会先把数据拉到中间层再过滤,导致实际处理的数据量远超2万行。

回复

使用道具 1 举报

发表于 3 天前
尝试解决:

在数据集属性里找到 “启用数据库分页” 或类似选项,确保分页和过滤操作被 下推到数据库执行;

在SQL里加上 LIMIT 或 ROWNUM 测试,如果加了之后速度正常,说明是分页下推没生效。

3. 检查数据库驱动和连接池
有时候是JDBC驱动版本或连接池配置问题,导致每条记录传输效率低下。可以尝试:

升级或更换JDBC驱动版本;

检查数据库连接池的 fetchSize 设置(调大fetchSize可以减少网络往返次数)。

我的结论
2万行数据跑40秒肯定不正常,优先排查 “外层自动包装” 和 “分页下推” 这两个方向,大概率是这里的问题。如果搞不定,建议把SQL贴出来让社区里的大神帮忙分析执行计划。

回复

使用道具 1 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

4回帖数 0关注人数 76浏览人数
最后回复于:3 天前

社区

指南

AI

搜索

快速回复 返回顶部 返回列表