Oracle 左连接+count 10w数据量查不出来结果

heheda123078 2021-05-25 05:36:30
A,B表都是大表,数据量千万级别;按每天和地区做了分区和子分区,索引什么的也建了;
问题:A/B表左连接,count某一天符合条件的数据时,7分钟仍然没出结果;
SQL类似:select count(*) from tabble_a A,table_b B where A.busi_day=B.busi_day(+) and A.regin_part=B.regin_part(+) and A.busi_day="20200321" and A.regin_part="A"
排查过程:
1.执行计划看了,分区索引该用上的都用上了,count(*),count(1)什么的试了没用;
2.查看当天数据发现当天A,B表符合条件的数据量大概在11w左右,count其他日期数据能查出来,但该天AB表数据量基本在4w左右;
目前定位到的问题是:
一旦AB表某天符合条件的数据量超过10w,就count不出来;
但count如3月1至3月20日总计50w+的数据能count出来;


各位大佬可有优化意见?
...全文
501 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
=PNZ=BeijingL 2021-05-27
  • 打赏
  • 举报
回复
A.regin_part="A"
A.busi_day="20200321"
A.regin_part="A" AND A.busi_day="20200321"
数据分别多少啊, 数据千万级看这个按天条件应该能过滤很多的,
如果数据量 A.regin_part="A" AND A.busi_day="20200321" 的结果很少,再考虑下联合索引
如果上面3个条件数据都很少, 看看是不是索引失效,尝试表分析后再试试
wildwolv 2021-05-27
  • 打赏
  • 举报
回复
换个写法试下 SELECT COUNT(A.*) FROM (SELECT BUSI_DAY,REGIN_PART FROM TABBLE_A WHERE AND BUSI_DAY="20200321" AND REGIN_PART="A") A INNER JOIN TABLE_B B ON A.BUSI_DAY=B.BUSI_DAY(+) AND A.REGIN_PART=B.REGIN_PART(+)
heheda123078 2021-05-25
  • 打赏
  • 举报
回复
来个大佬帮忙看看啊

3,491

社区成员

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

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