求助!!!关于like的问题

trial 2011-08-24 02:26:31
SELECT A.HOME_AREA,
F_ASP_COM_TYPE(A.HOME_COM) HOME_COM,
A.HOME_NUMBER,
SUM(DECODE(A.CALL_TYPE, '01', 1, 0)) CALL_CNT_OUT,
SUM(DECODE(A.CALL_TYPE, '02', 1, 0)) CALL_CNT_IN,
COUNT(1) CALL_CNT_ALL,
SUM(TRUNC((DECODE(A.CALL_TYPE, '01', A.DURATION, 0) + 5) / 6) * 6) DURATION_TIME_OUT,
SUM(TRUNC((DECODE(A.CALL_TYPE, '02', A.DURATION, 0) + 5) / 6) * 6) DURATION_TIME_IN,
SUM(TRUNC((A.DURATION + 5) / 6) * 6) DURATION_TIME_ALL,
SUM(INCOME_FEE)/1000 INCOME_FEE,
SUM(PAY_FEE)/1000 PAY_FEE,
SUM(INCOME_FEE - PAY_FEE)/1000 TOTAL_FEE
FROM (SELECT T1.*,
DM.F_PLATFORM_NUMBER(T1.OPPO_NUMBER, T1.OPPO_AREA) OPPO_NUMBER_N
FROM MID.MID_BILL_CDR_SETTLE_TTYD T1
WHERE T1.USER_ID IS NOT NULL
AND T1.DAY_ID = '18'
AND T1.MONTH_ID = '201108'
UNION ALL
SELECT T2.*,
DM.F_PLATFORM_NUMBER(T2.OPPO_NUMBER, T2.OPPO_AREA) OPPO_NUMBER_N
FROM MID.MID_BILL_CDR_SETTLE_TTGW T2
WHERE T2.USER_ID IS NOT NULL
AND T2.DAY_ID = '18'
AND T2.MONTH_ID = '201108') A,
DMCODE.DIM_PLATFORM_TYPE B
WHERE LENGTH(A.OPPO_NUMBER) < 11
AND A.OPPO_NUMBER like B.PLATFORM_ID ||'%'
GROUP BY A.HOME_AREA, A.HOME_COM, A.HOME_NUMBER


这样查询下来效率很低,有没有其他方法呢?
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2011-08-30
  • 打赏
  • 举报
回复
先去看执行计划
taikongxinke 2011-08-30
  • 打赏
  • 举报
回复
建议用临时表分步进行,这样会提高效率。
coolkisses 2011-08-30
  • 打赏
  • 举报
回复
A、B 两表没有关联条件,是做笛卡尔积吗? 再加上数据量超大,查询不慢才怪了。
90后小朋友 2011-08-30
  • 打赏
  • 举报
回复
好帖顶
Dave 2011-08-29
  • 打赏
  • 举报
回复
兰兰很热心啊。

建索引是一方面,还是就是一些写法,尽量避免。
is not null 会限制索引,就是该字段有索引,也不会走。 在内层select 时,就可以把结果限制住,这样外层select 查询的data 就会少。

Oracle 索引 详解
http://blog.csdn.net/tianlesoftware/article/details/5347098

Oracle SQL的优化
http://blog.csdn.net/tianlesoftware/article/details/4672023

常用的PL/SQL开发原则 by dbsanke
http://blog.csdn.net/tianlesoftware/article/details/6618115



[Quote=引用 4 楼 yixilan 的回复:]

引用 3 楼 trial 的回复:
每天的量大概是4千万吧

光给出数量没啥用处,得知道表结构,索引之类的信息。
其实,你可以按索引,自己先调一下。
[/Quote]
yixilan 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 trial 的回复:]
每天的量大概是4千万吧
[/Quote]
光给出数量没啥用处,得知道表结构,索引之类的信息。
其实,你可以按索引,自己先调一下。
trial 2011-08-29
  • 打赏
  • 举报
回复
每天的量大概是4千万吧
007-x 2011-08-25
  • 打赏
  • 举报
回复
没有表结构和数据量的信息 怎么帮你优化呢
yixilan 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 trial 的回复:]
SQL code
SELECT A.HOME_AREA,
F_ASP_COM_TYPE(A.HOME_COM) HOME_COM,
A.HOME_NUMBER,
这样查询下来效率很低,有没有其他方法呢?
[/Quote]
首先保证,你在A这个子查询中,对于T1和T2两张表的查询,条件都是按索引来的;

但是对于那个like语句,好象调不了。

17,082

社区成员

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

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