Oracle 几十张表关联查数据很慢,有加速多表关联数据查询的解决方法吗

ShineQiu 2016-08-11 11:46:57
客户要求根据查询条件查询数据。但这些数据分布在不同的表中,如果关联查询的话会很慢,因为各个表的数据都非常大。
那有其他的搜索解决方法吗?
网上看了下有全库搜索,用的上吗?20多张表关联,基本也算是库中所有的表了。
...全文
2776 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShineQiu 2016-08-15
  • 打赏
  • 举报
回复
引用 9 楼 ghx287524027 的回复:
[quote=引用 8 楼 ShineQiu 的回复:] [quote=引用 7 楼 ghx287524027 的回复:] [quote=引用 6 楼 ShineQiu 的回复:] [quote=引用 5 楼 ghx287524027 的回复:] [quote=引用 3 楼 ShineQiu 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式[/quote] 嗯,谢谢,也就说物化视图也可以进行表分区喽?[/quote] 可以。物化视图可以基于分区表,本身也支持分区[/quote] 由于表的数据量大,我们决定使用oracle全文索引技术来查询,看了文档里支持对一个表的多个字段建立索引字段, 那么可不可以对多个表的多个字段建索引字段从而可以同时检索多个表上的多个字段里的数据呢?[/quote] 第一种情况是属于组合索引;对于第二种,可以在多表的多个字段建立索引,其实就是在多个表上都建立组合索引,但是这样能满足你的要求?[/quote] 举个例子: call ctx_ddl.create_preference ('hczc_lexer', 'chinese_vgram_lexer'); --多列全文索引 call ctx_ddl.create_preference('hczc_mds', 'MULTI_COLUMN_DATASTORE'); --指定检索字段 call ctx_ddl.set_attribute('hczc_mds', 'columns', 'AJBH, AJMC, FADY,SLSJ,JYAQ,LASJ,PARQ , QSY'); CREATE INDEX DBA_AJ_JBXX_text ON DBA_AJ_JBXX(AJBH) indextype IS ctxsys.context parameters('datastore hczc_mds lexer hczc_lexer'); SELECT * from DBA_AJ_JBXX where contains(AJBH,'张红 and 手段不详')>0; 我有个想法,就是: 这里指定的索引字段都是表DBA_AJ_JBXX的,现在我还有表B,那我可不可以把表B的字段也加到'hczc_mds'中,从而实现进行 SELECT * from DBA_AJ_JBXX where contains(AJBH,'张红 and 手段不详')>0; 搜索时,也查询出表B里的数据?
ghx287524027 2016-08-15
  • 打赏
  • 举报
回复
引用 8 楼 ShineQiu 的回复:
[quote=引用 7 楼 ghx287524027 的回复:] [quote=引用 6 楼 ShineQiu 的回复:] [quote=引用 5 楼 ghx287524027 的回复:] [quote=引用 3 楼 ShineQiu 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式[/quote] 嗯,谢谢,也就说物化视图也可以进行表分区喽?[/quote] 可以。物化视图可以基于分区表,本身也支持分区[/quote] 由于表的数据量大,我们决定使用oracle全文索引技术来查询,看了文档里支持对一个表的多个字段建立索引字段, 那么可不可以对多个表的多个字段建索引字段从而可以同时检索多个表上的多个字段里的数据呢?[/quote] 第一种情况是属于组合索引;对于第二种,可以在多表的多个字段建立索引,其实就是在多个表上都建立组合索引,但是这样能满足你的要求?
ShineQiu 2016-08-15
  • 打赏
  • 举报
回复
引用 7 楼 ghx287524027 的回复:
[quote=引用 6 楼 ShineQiu 的回复:] [quote=引用 5 楼 ghx287524027 的回复:] [quote=引用 3 楼 ShineQiu 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式[/quote] 嗯,谢谢,也就说物化视图也可以进行表分区喽?[/quote] 可以。物化视图可以基于分区表,本身也支持分区[/quote] 由于表的数据量大,我们决定使用oracle全文索引技术来查询,看了文档里支持对一个表的多个字段建立索引字段, 那么可不可以对多个表的多个字段建索引字段从而可以同时检索多个表上的多个字段里的数据呢?
ghx287524027 2016-08-11
  • 打赏
  • 举报
回复
贴子发重了,从语句优化角度没有多大优化空间,只能从设计角度思考了。原理就是空间换时间。 可以考虑把原来的那么多的表合并成一个表,建个分区表,按照某个字段分区,有点儿空间换时间的意思
ghx287524027 2016-08-11
  • 打赏
  • 举报
回复
引用 6 楼 ShineQiu 的回复:
[quote=引用 5 楼 ghx287524027 的回复:] [quote=引用 3 楼 ShineQiu 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式[/quote] 嗯,谢谢,也就说物化视图也可以进行表分区喽?[/quote] 可以。物化视图可以基于分区表,本身也支持分区
ShineQiu 2016-08-11
  • 打赏
  • 举报
回复
引用 5 楼 ghx287524027 的回复:
[quote=引用 3 楼 ShineQiu 的回复:] [quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式[/quote] 嗯,谢谢,也就说物化视图也可以进行表分区喽?
ghx287524027 2016-08-11
  • 打赏
  • 举报
回复
引用 3 楼 ShineQiu 的回复:
[quote=引用 2 楼 wmxcn2000 的回复:] 楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表[/quote] 上面说的是思路,物化视图是实现方式
桃花岛黄岛主 2016-08-11
  • 打赏
  • 举报
回复
表多不是问题,看结果集,如果结果不大,并且索引的离散度还不错的话,问题不大的
ShineQiu 2016-08-11
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
楼可以考虑一个物化视图,这个比较适合你现在的场景;
非常感谢!以前从没用过,但刚查了下,确实是个很好的解决办法。 我可不可以这样理解物化视图:其实就像是一楼说的,是将多个表合成一个表
卖水果的net 2016-08-11
  • 打赏
  • 举报
回复
楼可以考虑一个物化视图,这个比较适合你现在的场景;

3,491

社区成员

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

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