笛卡尔积oracle,执行计划中出现笛卡尔积

在Oracle查询中遇到笛卡尔积问题,导致执行计划变慢。通过分析发现,原本的查询语句在JOIN操作时未有效利用索引,通过添加/*+leading()*/优化提示改善了查询性能。探讨了如何避免笛卡尔积及其对查询效率的影响,并寻求其他可能的解决策略。
摘要由CSDN通过智能技术生成

SELECT t3.h_city

,t3.h_a_code

,t3.c_a_code

,t3.b_id

,COUNT(DISTINCT t1.userid)

FROM

tmp_bam_ochat_order_m_xzw t1

INNER JOIN tmp_bam_ochat_cactive_m_xzw t2

ON t1.userid = t2.userid

AND t2.s_month = 201108

INNER join tmp_bam_ochat_user_m_xzw t3

ON t1.userid = t3.userid

AND t3.u_status < 30

AND t3.j_date <= TO_DATE('2011-08-31','yyyy-mm-dd')

AND t3.s_month = 201108

WHERE t1.s_month =201108

GROUP By t3.h_city,t3.h_a_code,t3.c_a_code,t3.b_id

t1,t2,t3表都有建索引USERID,而且也都有分区,分区字段是s_month,t1,t2数据量是几十万,t3数据量是6百多万。

但发现跑起来很慢,执行计划出现笛卡尔积,内容如下:

--------------------------------------------------------------------------------------------------------------------------

| Id  | Operation                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值