首页 > 解决方案 > DB2 查询速度

问题描述

我有一个运行非常长的SELECT查询的 DB2 过程(6 个 CTE,涉及大约 5 或 6 个不同的表,一些旋转,很少的连接)。我System i Navigator以“管理员”用户身份登录。该用户帐户有权执行几乎所有操作。我的个人用户名没有。因此,我以此身份登录以使自己更容易。

当我运行此过程时(通过打开 SQL 脚本窗口并输入CALL Procedure_Name('Param1');),处理将在 4 或 5 秒内完成。

i Navigator我的老板已经以他自己的用户名登录了他。他的用户名比我的个人账户有更多的权力,但比我使用的管理员账户少。当他以与我相同的方法运行相同的程序时,运行它大约需要 15-20 秒。

所以我的问题是,您登录的用户名会影响 DB2 查询的运行速度吗?如果是这样,我该怎么做才能使所有用户的查询以相同的速度运行,最好是管理员帐户运行它的速度?

标签: db2query-optimizationibm-midrangedb2-400

解决方案


使用 Run SQL Scripts 中的“Run & Explain”(最好是Access Client Solutions (ACS) 中包含的最新版本,而不是旧的 IBM i Access for Windows i Navigator 版本)

比较来自不同用户配置文件的结果。特别是 INI 选项部分……听起来好像优化目标可能不同。意味着数据库将选择最有效的计划来尽快返回前几条记录;如果用户正在等待在屏幕上看到某些东西,那就完美了。 意味着数据库将选择最有效的计划来返回所有记录;非常适合无论如何都要检索所有记录的批处理(或客户端应用程序)。
INI 选项
*FIRSTIO*ALLIO

另请查看环境信息部分 ,这将显示一个用户是否在不同的内存池和/或工作负载组中运行和/或在一个用户运行时可用内存存在显着差异。
环境信息


推荐阅读