db2 - DB2 查询速度
问题描述
我有一个运行非常长的SELECT
查询的 DB2 过程(6 个 CTE,涉及大约 5 或 6 个不同的表,一些旋转,很少的连接)。我System i Navigator
以“管理员”用户身份登录。该用户帐户有权执行几乎所有操作。我的个人用户名没有。因此,我以此身份登录以使自己更容易。
当我运行此过程时(通过打开 SQL 脚本窗口并输入CALL Procedure_Name('Param1');
),处理将在 4 或 5 秒内完成。
i Navigator
我的老板已经以他自己的用户名登录了他。他的用户名比我的个人账户有更多的权力,但比我使用的管理员账户少。当他以与我相同的方法运行相同的程序时,运行它大约需要 15-20 秒。
所以我的问题是,您登录的用户名会影响 DB2 查询的运行速度吗?如果是这样,我该怎么做才能使所有用户的查询以相同的速度运行,最好是管理员帐户运行它的速度?
解决方案
使用 Run SQL Scripts 中的“Run & Explain”(最好是Access Client Solutions (ACS) 中包含的最新版本,而不是旧的 IBM i Access for Windows i Navigator 版本)
比较来自不同用户配置文件的结果。特别是 INI 选项部分……听起来好像优化目标可能不同。意味着数据库将选择最有效的计划来尽快返回前几条记录;如果用户正在等待在屏幕上看到某些东西,那就完美了。 意味着数据库将选择最有效的计划来返回所有记录;非常适合无论如何都要检索所有记录的批处理(或客户端应用程序)。
*FIRSTIO
*ALLIO
另请查看环境信息部分
,这将显示一个用户是否在不同的内存池和/或工作负载组中运行和/或在一个用户运行时可用内存存在显着差异。
推荐阅读
- git - 如何将主分支合并到功能分支
- javascript - 鼠标位置上的水平滚动(鼠标填充)
- python - 将 DOCX 中的内容提取到 Python 代码中
- angular - Angular2 Http请求将baseURL添加到POST请求
- flash-cs6 - 导出 swf 文件 Flash CS6
- memory-management - 如何初始化具有固定大小数组的结构作为成员元素?
- php - 绑定从视图提交到控制器的值
- java - 从 java 8 流中获取 N(3) 个列表(基于 ENUM 性别(男性、女性、其他))并基于 ENUM 过滤条件
- java - 如何降低此 O(n^3) 代码的时间复杂度
- python - 如何比较具有相同列但顺序不同(SQL 或 python)的两个表?