- 最后登录
- 2017-2-9
- 在线时间
- 43 小时
- 威望
- 22
- 金钱
- 371
- 注册时间
- 2012-4-19
- 阅读权限
- 10
- 帖子
- 57
- 精华
- 1
- 积分
- 22
- UID
- 363
|
1#
发表于 2013-7-19 11:28:38
|
查看: 3460 |
回复: 2
sql如下
SELECT SUM(TT.CNT) SUMCNT
FROM (SELECT 2, COUNT(*) CNT
FROM EVENT_RECURRING_225 C
WHERE C.BILLING_CYCLE_ID = 225
AND C.SUBS_ID IN (SELECT ID FROM SUBS WHERE ACC_NBR = '9781699546')
UNION
SELECT 3, COUNT(*) CNT
FROM OCS_CDR_219 B
WHERE B.BILLING_CYCLE_ID = 225
AND B.RE_ID IN (1230, 1312)
AND B.SUBS_ID IN
(SELECT T.ID FROM SUBS T WHERE T.ACC_NBR = '9781699546')) TT
执行时间为433.932秒,执行计划如下
把条件中的号码部分直接换成subs_id的sql如下
SELECT SUM(TT.CNT) SUMCNT
FROM (SELECT 2, COUNT(*) CNT
FROM EVENT_RECURRING_225 C
WHERE C.BILLING_CYCLE_ID = 225
AND C.SUBS_ID IN (80660675)
UNION
SELECT 3, COUNT(*) CNT
FROM OCS_CDR_219 B
WHERE B.BILLING_CYCLE_ID = 225
此sql在rb库中执行速度比较快,仅需要0.047秒,
EVENT_RECURRING_225 ,和 OCS_CDR_219 的 SUBS_ID 都有索引, 第一个SQL 没有走索引 2个表都走了全表扫描,
第二个SQL 分别走了 各自表 SUBS_ID 的索引 所以很快? SUBS 表示另外一个实例上的 表,建了 同义词。
不知道为什么第一个SQL 无法使用索引?是不是由于DBLINK 导致的? 怎么解决?
|
Oracle ALLSTARS II:171092051(Oracle基础讨论群)
提问之前请阅读以下链接
http://t.askmaclean.com/thread-714-1-1.html
http://train.askmaclean.com/node/5
Oracle ALLSTARS III:180013778(扯蛋打酱油专用群)
|
|