Hello!
I have a query that does exactly what I need it to but I know there has to a better way to write this because it runs for 17 minutes. The problem is in the where logic because when I take the where out, it runs in less than a minute. Can anyone help me rewrite the where?
SELECT DISTINCT
A.ID ,
A.[Last Name] ,
A.[First Name] ,
A.[Middle Name] ,
A.[Reunion Class 1]
FROM ( SELECT PREFERRED_MAIL_VIEW.ID ,
PREFERRED_MAIL_VIEW.[Last Name] ,
PREFERRED_MAIL_VIEW.[First Name] ,
PREFERRED_MAIL_VIEW.[Middle Name] ,
PREFERRED_MAIL_VIEW.[Reunion Class 1] ,
cndmsl0.AS400ID ,
cndmsl0.J1NMID ,
cndmsl0.J1LOID ,
cndmsl0.J1GRYR ,
cndmsl0.J1COLG ,
appcl.AS400ID AS AS400ID1 ,
appcl.NMID11 ,
appcl.MAJ111 ,
appcl.MAJ211 ,
appcl.MAJ11C ,
appcl.MAJ21C ,
appcl.CLL111 ,
appcl.CLL211 ,
appcl.CLL311 ,
appcl.CLL411 ,
appcl.CLL11C ,
appcl.CLL21C ,
appcl.CLL31C ,
appcl.CLL41C ,
appcl.CL1D11 ,
appcl.CL2D11 ,
appcl.CL3D11 ,
appcl.CL4D11 ,
appcl.CL1D1C ,
appcl.CL2D1C ,
appcl.CL3D1C ,
appcl.CL4D1C ,
appcl.CL1M11 ,
appcl.CL2M11 ,
appcl.CL3M11 ,
appcl.CL4M11 ,
appcl.CL1M1C ,
appcl.CL2M1C ,
appcl.CL3M1C ,
appcl.CL4M1C ,
appcl.CL1G11 ,
appcl.CL2G11 ,
appcl.CL3G11 ,
appcl.CL4G11 ,
appcl.CCG111 ,
appcl.CGP211 ,
appcl.CGP311 ,
appcl.CGP411 ,
appcl.CRD111 ,
appcl.CRD211 ,
appcl.CRD311 ,
appcl.CRD411 ,
appcl.CLT111 ,
appcl.CLT211 ,
appcl.CLT311 ,
appcl.CLT411 ,
adorhsl0.AS400ID AS AS400ID2 ,
adorhsl0.JCNMID ,
adorhsl0.JCXVAS ,
adorhsl0.JCOIAD ,
adorhsl0.JCOCAD ,
adorhsl0.JCOTAD ,
adorhsl0.JCLORG ,
adorhsl0.JCDEGR ,
adorhsl0.JCYRGD ,
adorhsl0.JCGPA ,
adotel0.AS400ID AS AS400ID3 ,
adotel0.AWNMID ,
adotel0.AWXVAS ,
adotel0.AWOIAD ,
adotel0.AWOCAD ,
adotel0.AWOTAD ,
adotel0.AWHOAA ,
adotel0.AWHOAC ,
orgtrl0.AS400ID AS AS400ID4 ,
orgtrl0.ASNMID ,
orgtrl0.ASXVAS ,
orgtrl0.ASORID ,
orgtrl0.ASYNAW ,
orgtrl0.ASCOAA ,
orgtrl0.ASCPAA
FROM PREFERRED_MAIL_VIEW
LEFT JOIN STUDENTS ON PREFERRED_MAIL_VIEW.ID = STUDENTS.STUDENTS_ID
LEFT JOIN ( SELECT CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END AS COLL_ID ,
LTRIM(as400_cndmsl0.J1NMID) AS AS400ID ,
as400_cndmsl0.*
FROM as400_cndmsl0
LEFT JOIN PERSON_ALT ON LTRIM(as400_cndmsl0.J1NMID) = PERSON_ALT.PERSON_ALT_IDS
LEFT JOIN PERSON ON as400_cndmsl0.J1NMID = SUBSTRING(PERSON.SSN,
1, 3)
+ SUBSTRING(PERSON.SSN,
5, 2)
+ SUBSTRING(PERSON.SSN,
8, 4)
WHERE CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END IS NOT NULL
) cndmsl0 ON PREFERRED_MAIL_VIEW.ID = cndmsl0.COLL_ID
LEFT JOIN ( SELECT CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END AS COLL_ID ,
LTRIM(as400_appcl.NMID11) AS AS400ID ,
as400_appcl.*
FROM as400_appcl
LEFT JOIN PERSON_ALT ON LTRIM(as400_appcl.NMID11) = PERSON_ALT.PERSON_ALT_IDS
LEFT JOIN PERSON ON as400_appcl.NMID11 = SUBSTRING(PERSON.SSN,
1, 3)
+ SUBSTRING(PERSON.SSN,
5, 2)
+ SUBSTRING(PERSON.SSN,
8, 4)
WHERE CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END IS NOT NULL
) appcl ON PREFERRED_MAIL_VIEW.ID = appcl.COLL_ID
LEFT JOIN ( SELECT CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END AS COLL_ID ,
LTRIM(as400_adorhsl0.JCNMID) AS AS400ID ,
as400_adorhsl0.*
FROM as400_adorhsl0
LEFT JOIN PERSON_ALT ON LTRIM(as400_adorhsl0.JCNMID) = PERSON_ALT.PERSON_ALT_IDS
LEFT JOIN PERSON ON as400_adorhsl0.JCNMID = SUBSTRING(PERSON.SSN,
1, 3)
+ SUBSTRING(PERSON.SSN,
5, 2)
+ SUBSTRING(PERSON.SSN,
8, 4)
WHERE CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END IS NOT NULL
) adorhsl0 ON PREFERRED_MAIL_VIEW.ID = adorhsl0.COLL_ID
LEFT JOIN ( SELECT CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END AS COLL_ID ,
LTRIM(as400_adotel0.AWNMID) AS AS400ID ,
as400_adotel0.*
FROM as400_adotel0
LEFT JOIN PERSON_ALT ON LTRIM(as400_adotel0.AWNMID) = PERSON_ALT.PERSON_ALT_IDS
LEFT JOIN PERSON ON as400_adotel0.AWNMID = SUBSTRING(PERSON.SSN,
1, 3)
+ SUBSTRING(PERSON.SSN,
5, 2)
+ SUBSTRING(PERSON.SSN,
8, 4)
WHERE CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END IS NOT NULL
) adotel0 ON PREFERRED_MAIL_VIEW.ID = adotel0.COLL_ID
LEFT JOIN ( SELECT CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END AS COLL_ID ,
LTRIM(as400_orgtrl0.ASNMID) AS AS400ID ,
as400_orgtrl0.*
FROM as400_orgtrl0
LEFT JOIN PERSON_ALT ON LTRIM(as400_orgtrl0.ASNMID) = PERSON_ALT.PERSON_ALT_IDS
LEFT JOIN PERSON ON as400_orgtrl0.ASNMID = SUBSTRING(PERSON.SSN,
1, 3)
+ SUBSTRING(PERSON.SSN,
5, 2)
+ SUBSTRING(PERSON.SSN,
8, 4)
WHERE CASE WHEN PERSON_ALT.ID IS NOT NULL
THEN PERSON_ALT.ID
ELSE PERSON.ID
END IS NOT NULL
) orgtrl0 ON PREFERRED_MAIL_VIEW.ID = orgtrl0.COLL_ID
WHERE PREFERRED_MAIL_VIEW.[Reunion Class 1] IS NOT NULL
AND ( cndmsl0.J1LOID IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR appcl.CLL11C IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR appcl.CLL21C IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR appcl.CLL31C IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR appcl.CLL41C IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR adorhsl0.JCOIAD IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR adorhsl0.JCOCAD IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR orgtrl0.ASORID IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR orgtrl0.ASYNAW IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR adotel0.AWOIAD IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
OR adotel0.AWOCAD IN (
SELECT INSTITUTIONS_LS.INST_IDS_IDX
FROM INSTITUTIONS_LS
WHERE INSTITUTIONS_LS.INSTITUTIONS_ID = '0001867' )
)
) AS A
↧