是多表连接查询效率高还是多次单表查询效率高啊

天之南极 2013-01-24 11:27:45
SELECT a.*
FROM CBOSS.CALL_BACK_CRM T, cboss.i_user_radius_index_his a
WHERE t.phone_id = a.bill_id
and t.so_nbr = a.so_nbr
and a.act_type = '06'
and t.busi_type = 53
and result_code not in ('0', '00','1-00', '1-0000', '2-00', '2-0000')
and t.create_date >=
to_date('2012-04-15 01:00:00', 'yyyy-mm-dd hh24:mi:ss')
and t.create_date <=
to_date('2012-05-15 01:00:00', 'yyyy-mm-dd hh24:mi:ss')


call_back_CRM 表每天有几千万的数据量,不知道多表连接查询好,还是查询单表后再查询另一个单表效率好,,,


数据库是oralce
...全文
10659 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
亚飞正传 2013-07-10
  • 打赏
  • 举报
回复
是不是要区分不同的场景,比如大数据量和少量数据?不过,单表查询组合数据的话,个人觉得模块化更好些,元数据sql复用率高。
jwlee_313 2013-01-28
  • 打赏
  • 举报
回复
应该一样的,oracle会自动给你优化的,要不你看下执行计划
huyaowu001 2013-01-28
  • 打赏
  • 举报
回复
引用 10 楼 woshishui50 的回复:
引用 8 楼 linwaterbin 的回复:不一定 call_back_CRM 表每天有几千万的数据量, 这些数量一进来就拿去用还是搁在库里? 如果是一进来就用建议用子查询call_back_crm表中的每天会有大量的数据,这个连接查询只是要把其中的错误数据查询出,然后放到中间表中, 版主大大 我没有表述清楚。 连接查询是 call_back_crm跟i_us……
xiaoyanglei 2013-01-27
  • 打赏
  • 举报
回复
楼主可以做个试验 试下哪个快
天之南极 2013-01-26
  • 打赏
  • 举报
回复
引用 8 楼 linwaterbin 的回复:
不一定 call_back_CRM 表每天有几千万的数据量, 这些数量一进来就拿去用还是搁在库里? 如果是一进来就用建议用子查询
call_back_crm表中的每天会有大量的数据,这个连接查询只是要把其中的错误数据查询出,然后放到中间表中, 版主大大 我没有表述清楚。 连接查询是 call_back_crm跟i_user_radius_index表连接然后union all连接 call_back_crm和i_user_radius_index_his表 。。。 总共连接6次(call_back_crm表 call_back_crm_his call_back_crm_his_YYYYMM ) 最后把数据查出来 我想的单表查询是 查询call_back_crm 表还要查call_back_crm_his call_back_crm_his_YYYYMM等最近两个月的分表,如果用单表查询,需要把这些表都查询一边,查出来so_nbr然后查询 i_user_radius_index 表和i_user_radius_index_his表, 现在想想这会有问题的,查出来so_nbr 然后根据每个so_nbr 去i_user_radius_index表中查数据,程序中这样循环扫表每次只查出来一条这样根本不行,,
天之南极 2013-01-26
  • 打赏
  • 举报
回复
引用 7 楼 pp3140103 的回复:
你表连接也是一样的查6次啊 关键是其关联的数据量更大!1
查询出来的数据是很小一部分,原来的作法是就是union all后查出来,虽然会查很久,不过只会查一次,我先把call_back_crm中的so_nbr查询出再去查i_user_radius_index表时,只能一条条查出来,这样问题会很大,
ajune 2013-01-26
  • 打赏
  • 举报
回复
先设定成某单元查询,然后再把结果拼接,这样应该相对效率比较高
linwaterbin 2013-01-25
  • 打赏
  • 举报
回复
不一定 call_back_CRM 表每天有几千万的数据量, 这些数量一进来就拿去用还是搁在库里? 如果是一进来就用建议用子查询
pp3140103 2013-01-25
  • 打赏
  • 举报
回复
你表连接也是一样的查6次啊 关键是其关联的数据量更大!1
天之南极 2013-01-24
  • 打赏
  • 举报
回复
引用 5 楼 shadow1986a 的回复:
先根据条件从单表中查询结果,然后把这几个结果连接起来快点。
现在是查询call_back_crm 表还要查call_back_crm_his call_back_crm_his_201301等最近两个月的分表,如果用单表查询,需要把这些表都查询一边,然后查询 i_user_radius_index 表和i_user_radius_index_his表,这样需要查询6次单表
shadow1986a 2013-01-24
  • 打赏
  • 举报
回复
先根据条件从单表中查询结果,然后把这几个结果连接起来快点。
我看见佛 2013-01-24
  • 打赏
  • 举报
回复
应该是单表。
天之南极 2013-01-24
  • 打赏
  • 举报
回复
引用 2 楼 wmg494005678 的回复:
最近在看一本书“Oracle SQL高级编程”推荐楼主看一下。。。
这个可以啊,不过解不了燃眉之急啊,求大神出现
wmg494005678 2013-01-24
  • 打赏
  • 举报
回复
最近在看一本书“Oracle SQL高级编程”推荐楼主看一下。。。
天之南极 2013-01-24
  • 打赏
  • 举报
回复
有大神没有啊,帮忙讲解一下,多表连接效率问题,数据量都很大,查询一次好慢啊

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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