2个sql,那个效率高,为什么
SELECT B.agentname,
B.CITYNAME,
B.ORGNAME,
A.DSTID,
' ' || TO_CHAR(A.COMMITTIME, 'YYYY-MM-DD HH24:MI:SS'),
C.ENUMDESC,
A.MSGCONTENT,
A.num
FROM (select max(DSTID) DSTID,
max(MSGCONTENT) MSGCONTENT,
max(RECEIVER_SCHOOLID) RECEIVER_SCHOOLID,
max(COMMITTIME) COMMITTIME,
count(1) num,
SYSMESSAGETYPE,
message_id
from JUSTONE4.LIST_MT partition(p2)
where SYSFUNCTIONID = 2
AND COMMITTIME < TRUNC(to_date('20090301', 'yyyymmdd'))
AND COMMITTIME >=
to_date(to_char(to_date('20090301', 'yyyymmdd') - 1, 'yyyymm') || '01',
'yyyymmdd')
group by message_id, SYSMESSAGETYPE) A,
(SELECT L.ORGID SCHOOLID,
L.ORGNAME,
D.ORGNAME CITYNAME,
a.orgname agentname
FROM JUSTONE4.ORGDETAIL_SCHOOL L,
justone4.orgdetail_city D,
justone4.orgdetail_agentl1 a
WHERE L.CITYID = D.ORGID
AND L.Agentl1id = a.orgid
AND L.CITYID = 20) B,
JUSTONE4.ENUMDETAIL C
WHERE A.RECEIVER_SCHOOLID = B.SCHOOLID
AND A.SYSMESSAGETYPE = C.ENUMVALUE
AND C.FIELDNAME = 'SysMessageType'
ORDER BY B.agentname, B.CITYNAME, B.ORGNAME, C.ENUMDESC
SELECT B.AGENTNAME,
B.CITYNAME,
B.ORGNAME,
A.DSTID,
' ' || TO_CHAR(A.COMMITTIME, 'YYYY-MM-DD HH24:MI:SS'),
(SELECT C.ENUMDESC
FROM JUSTONE4.ENUMDETAIL C
WHERE A.SYSMESSAGETYPE = C.ENUMVALUE
AND C.FIELDNAME = 'SysMessageType'),
A.MSGCONTENT,
A.NUM
FROM (SELECT MAX(DSTID) DSTID,
MAX(MSGCONTENT) MSGCONTENT,
MAX(RECEIVER_SCHOOLID) RECEIVER_SCHOOLID,
MAX(COMMITTIME) COMMITTIME,
COUNT(1) NUM,
SYSMESSAGETYPE,
MESSAGE_ID
FROM JUSTONE4.LIST_MT PARTITION(P2)
WHERE SYSFUNCTIONID = 2
AND COMMITTIME < TRUNC(TO_DATE('20090301', 'yyyymmdd'))
AND COMMITTIME >=
TO_DATE(TO_CHAR(TO_DATE('20090301', 'yyyymmdd') - 1, 'yyyymm') || '01',
'yyyymmdd')
GROUP BY MESSAGE_ID, SYSMESSAGETYPE) A,
(SELECT L.ORGID SCHOOLID,
L.ORGNAME,
D.ORGNAME CITYNAME,
A.ORGNAME AGENTNAME
FROM JUSTONE4.ORGDETAIL_SCHOOL L,
JUSTONE4.ORGDETAIL_CITY D,
JUSTONE4.ORGDETAIL_AGENTL1 A
WHERE L.CITYID = D.ORGID
AND L.AGENTL1ID = A.ORGID
AND L.CITYID = 20) B
WHERE A.RECEIVER_SCHOOLID = B.SCHOOLID
ORDER BY B.AGENTNAME, B.CITYNAME, B.ORGNAME
SELECT B.agentname,
B.CITYNAME,
B.ORGNAME,
A.DSTID,
' ' || TO_CHAR(A.COMMITTIME, 'YYYY-MM-DD HH24:MI:SS'),
C.ENUMDESC,
A.MSGCONTENT,
A.num
FROM (select max(DSTID) DSTID,
max(MSGCONTENT) MSGCONTENT,
max(RECEIVER_SCHOOLID) RECEIVER_SCHOOLID,
max(COMMITTIME) COMMITTIME,
count(1) num,
SYSMESSAGETYPE,
message_id
from JUSTONE4.LIST_MT partition(p2)
where SYSFUNCTIONID = 2
AND COMMITTIME < TRUNC(to_date('20090301', 'yyyymmdd'))
AND COMMITTIME >=
to_date(to_char(to_date('20090301', 'yyyymmdd') - 1, 'yyyymm') || '01',
'yyyymmdd')
group by message_id, SYSMESSAGETYPE) A,
(SELECT L.ORGID SCHOOLID,
L.ORGNAME,
D.ORGNAME CITYNAME,
a.orgname agentname
FROM JUSTONE4.ORGDETAIL_SCHOOL L,
justone4.orgdetail_city D,
justone4.orgdetail_agentl1 a
WHERE L.CITYID = D.ORGID
AND L.Agentl1id = a.orgid
AND L.CITYID = 20) B,
JUSTONE4.ENUMDETAIL C
WHERE A.RECEIVER_SCHOOLID = B.SCHOOLID
AND A.SYSMESSAGETYPE = C.ENUMVALUE
AND C.FIELDNAME = 'SysMessageType'
ORDER BY B.agentname, B.CITYNAME, B.ORGNAME, C.ENUMDESC
SELECT B.AGENTNAME,
B.CITYNAME,
B.ORGNAME,
A.DSTID,
' ' || TO_CHAR(A.COMMITTIME, 'YYYY-MM-DD HH24:MI:SS'),
(SELECT C.ENUMDESC
FROM JUSTONE4.ENUMDETAIL C
WHERE A.SYSMESSAGETYPE = C.ENUMVALUE
AND C.FIELDNAME = 'SysMessageType'),
A.MSGCONTENT,
A.NUM
FROM (SELECT MAX(DSTID) DSTID,
MAX(MSGCONTENT) MSGCONTENT,
MAX(RECEIVER_SCHOOLID) RECEIVER_SCHOOLID,
MAX(COMMITTIME) COMMITTIME,
COUNT(1) NUM,
SYSMESSAGETYPE,
MESSAGE_ID
FROM JUSTONE4.LIST_MT PARTITION(P2)
WHERE SYSFUNCTIONID = 2
AND COMMITTIME < TRUNC(TO_DATE('20090301', 'yyyymmdd'))
AND COMMITTIME >=
TO_DATE(TO_CHAR(TO_DATE('20090301', 'yyyymmdd') - 1, 'yyyymm') || '01',
'yyyymmdd')
GROUP BY MESSAGE_ID, SYSMESSAGETYPE) A,
(SELECT L.ORGID SCHOOLID,
L.ORGNAME,
D.ORGNAME CITYNAME,
A.ORGNAME AGENTNAME
FROM JUSTONE4.ORGDETAIL_SCHOOL L,
JUSTONE4.ORGDETAIL_CITY D,
JUSTONE4.ORGDETAIL_AGENTL1 A
WHERE L.CITYID = D.ORGID
AND L.AGENTL1ID = A.ORGID
AND L.CITYID = 20) B
WHERE A.RECEIVER_SCHOOLID = B.SCHOOLID
ORDER BY B.AGENTNAME, B.CITYNAME, B.ORGNAME
第一条
a与b关联和c表关联后做筛选,只做一次关联的动作;
第二条是a与b表关联后的每一条记录都与c表关联,a与b关联后有多少记录就与c表关联多少次
即第一条效率高(个人看法)