求助db2连表查询的效率问题。

老格 2008-05-06 11:48:07
有下面三条sql ,其中 table1 有100万数据量,table2 有1000万数据量
1、
select b.age ,
a.pay from table1 a, table2 b
where a.IDno=b.IDno
2、
select * from table1 a, table2 b
where a.IDno=b.IDno
3、
select
a.pay from table1 a, table2 b
where a.IDno=b.IDno

不知道为什么在db2中第二,三条sql都比第一条快得很多。
但是orcale三者差不多。
本人需要的是第一条。客户需要一个报表。希望哪位大侠能提供点好建议。
小弟在此先谢谢了。
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
askwho 2008-05-21
  • 打赏
  • 举报
回复
学习中……

关注中……
zhangjianying 2008-05-15
  • 打赏
  • 举报
回复
理论上 2应该最慢

如果你的结果是 1最慢 我估计可能是当时你执行的数据库刚好忙而已
你可以考虑在2个表的 IDno建立索引
然后再查询试试。
对了
在select 语句后加上 with ur 可能会好些
select * from [TABLE]
[WHERE .....]
with ur
老格 2008-05-06
  • 打赏
  • 举报
回复
没有,本人在执行这些sql时,如果不是select * from table1 a, table2 b
where a.IDno=b.IDno ,而是其他查询具体的列时,如
select a.pay from table1 a, table2 b
where a.IDno=b.IDno 只要查询的列中没大表table2的列时速度还是比较快的。
但是,含有大表table2的列时,就挺慢的。
这些语句我也在oracle中执行过,响应时间都差不多(于秒计算)。
db2数据量和oracle一样的。
yangxiao_jiang 2008-05-06
  • 打赏
  • 举报
回复
个人认为2应该没有1,3的效率高,你可以查看一下执行计划或者叫存取路径。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧