关于大数据量的表的联合查询

弹指神通 2013-10-17 09:06:54
1、现在有两张表,
一张表为资产(资产代码,A代码,B代码,C代码),
另一张为关系表(子类型,子代码,父类型,父代码),
关系表里面存了所有资产之间的关系。两张表的数据量差不多,大约都有一百万条数据左右,估计表里面内容的变动不会很频繁。
2、现在要做的事情是根据资产表的资产代码到关系表去查该资产的A,B,C代码。
3、我目前的做法是根据资产代码到关系表去查他的其他ABC代码,因为是树形结构的关系,所以并不是直接在关系表中就可以找到需要的结果,而是要根据资产代码到关系表里面去查的父亲或者祖先相应的A,B,C代码。写了一个存储过程,根据每一行的资产代码到关系表去查。因为查询的关系表太大,目前这个存储过程的耗时完全无法接受。请问大家有什么好的建议吗? 刚接触到这么大量的数据,完全没有经验,请大家帮忙啊!
...全文
532 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
弹指神通 2013-10-18
  • 打赏
  • 举报
回复
目前已经有一些改进了,我对两个表的查询条件加了索引,用游标对事实表的数据进行遍历。初次建立这些关系的时候大概差不多半个小时,但以后的更新都是增量更新,应该问题不大。 多谢各位!
弹指神通 2013-10-18
  • 打赏
  • 举报
回复
引用 3 楼 u012174761 的回复:
[quote=引用 2 楼 belovedmilan 的回复:] [quote=引用 1 楼 u012174761 的回复:] 第一索引必不可少 第二使用start with 和 connect by
谢谢!目前就是使用START WITH语句去查树形结构的东西。。。因为之前是在ETL中调用数据库函数,每一条数据调用一次,根据资产编号到关系表去查。感觉这样效率实在是很低下。有什么建议吗?是应该在ETL做完之后,统一对数据进行UPDATE,还是其他的方法?[/quote] 怎么又有了函数和update,和一开始的需求不一样啊,老板! 只说查询的话,实际上直接连表查询就行了 update应该也可以连表进行 函数是用来干什么的?[/quote] 函数就是到关系表去查数据的,根据查到的数据进行update,这算不算联合查询?貌似有点牵强,可能不算查询,但是UPDATE却是跟查询的结果有关,主要是去查的这个表太大。
zmn0079 2013-10-18
  • 打赏
  • 举报
回复
引用 2 楼 belovedmilan 的回复:
[quote=引用 1 楼 u012174761 的回复:] 第一索引必不可少 第二使用start with 和 connect by
谢谢!目前就是使用START WITH语句去查树形结构的东西。。。因为之前是在ETL中调用数据库函数,每一条数据调用一次,根据资产编号到关系表去查。感觉这样效率实在是很低下。有什么建议吗?是应该在ETL做完之后,统一对数据进行UPDATE,还是其他的方法?[/quote] 怎么又有了函数和update,和一开始的需求不一样啊,老板! 只说查询的话,实际上直接连表查询就行了 update应该也可以连表进行 函数是用来干什么的?
弹指神通 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 u012174761 的回复:
第一索引必不可少 第二使用start with 和 connect by
谢谢!目前就是使用START WITH语句去查树形结构的东西。。。因为之前是在ETL中调用数据库函数,每一条数据调用一次,根据资产编号到关系表去查。感觉这样效率实在是很低下。有什么建议吗?是应该在ETL做完之后,统一对数据进行UPDATE,还是其他的方法?
zmn0079 2013-10-17
  • 打赏
  • 举报
回复
第一索引必不可少 第二使用start with 和 connect by

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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