B
bill.peters
I have a query that I know will be a little slow, but with changes I
just made it's so slow ODBC times out. I think it has to do with the
way the joins are built, but I can't figure out how to change the SQL
to make it work. I'll paste the code below, any optimizations are
appreciated, but please look at the joins, I just want all records in
FRPSDBA_FRPST100_MEMBER and anything matching in the rest of the
tables.
Thanks in advance
-Bill
----------CODE-----------
SELECT Trim(FRPSDBA_FRPST100_MEMBER!M_LAST_NAME) & ", " &
Trim(FRPSDBA_FRPST100_MEMBER!M_FIRST_NAME) & " " &
FRPSDBA_FRPST100_MEMBER!M_MIDDLE_INIT AS FullName,
FRPSDBA_FRPST100_MEMBER.M_SSN AS SSN,
FRPSDBA_FRPST100_MEMBER.M_DATE_OF_BIRTH AS DOB,
FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN AS [Member Date],
FRPSDBA_FRPST130_ASSIGN.A_TERM_DATE AS [Term Date],
FRPSDBA_FRPST100_MEMBER.M_SEX AS Gender, Right([F_COMPANY1],3) AS
[CO#1], Right([F_COMPANY2],3) AS [CO#2],
FRPSDBA_FRPST100_MEMBER.M_MEMBER_STATUS AS [Member Status],
FRPSDBA_FRPST100_MEMBER.M_BENEFITS_STATUS AS [Benefits Status],
PointsForYear.R_YEAR_POINTS AS [Points Year Total Points],
IIf([R_CR_YRS_EARNED]>0,80,0) AS [Points Year Total Allowable Points],
FRPSDBA_FRPST100_MEMBER.M_PRE04_YRS_EARNED AS [Pre 04 Years Earned],
FRPSDBA_FRPST100_MEMBER.M_PST04_YRS_EARNED AS [Post 04 Years Earned],
FRPSDBA_FRPST100_MEMBER.M_TOT_BANK_YEARS AS [Banked Years],
FRPSDBA_FRPST100_MEMBER.M_TOT_YRS_SERVICE AS [Total years of service
(credited and banked)], IIf([Age55]=-1,"Y","N") AS [Over 55?],
55-[Age]+(Right(Date(),4)) AS [Year Turns 55],
Round((DateDiff("y",FRPSDBA_FRPST100_MEMBER!M_DATE_OF_BIRTH,Date())/365),0)
AS Age, [Age]>54 AS Age55
FROM (FRPSDBA_FRPSV320_RETIRE RIGHT JOIN (FRPSDBA_FRPSV250_VFIS RIGHT
JOIN (FRPSDBA_FRPST130_ASSIGN RIGHT JOIN FRPSDBA_FRPST100_MEMBER ON
FRPSDBA_FRPST130_ASSIGN.A_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) ON
FRPSDBA_FRPSV250_VFIS.F_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) ON
FRPSDBA_FRPSV320_RETIRE.VR_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) LEFT
JOIN PointsForYear ON FRPSDBA_FRPST100_MEMBER.M_SSN =
PointsForYear.R_SSN
WHERE (((FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN)<#11/1/2004#) AND
((FRPSDBA_FRPST100_MEMBER.M_TOT_YRS_SERVICE)>=1)) OR
(((FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN)<#11/1/2004#) AND
((PointsForYear.R_YEAR_POINTS)>=1))
ORDER BY FRPSDBA_FRPST100_MEMBER.M_SSN;
just made it's so slow ODBC times out. I think it has to do with the
way the joins are built, but I can't figure out how to change the SQL
to make it work. I'll paste the code below, any optimizations are
appreciated, but please look at the joins, I just want all records in
FRPSDBA_FRPST100_MEMBER and anything matching in the rest of the
tables.
Thanks in advance
-Bill
----------CODE-----------
SELECT Trim(FRPSDBA_FRPST100_MEMBER!M_LAST_NAME) & ", " &
Trim(FRPSDBA_FRPST100_MEMBER!M_FIRST_NAME) & " " &
FRPSDBA_FRPST100_MEMBER!M_MIDDLE_INIT AS FullName,
FRPSDBA_FRPST100_MEMBER.M_SSN AS SSN,
FRPSDBA_FRPST100_MEMBER.M_DATE_OF_BIRTH AS DOB,
FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN AS [Member Date],
FRPSDBA_FRPST130_ASSIGN.A_TERM_DATE AS [Term Date],
FRPSDBA_FRPST100_MEMBER.M_SEX AS Gender, Right([F_COMPANY1],3) AS
[CO#1], Right([F_COMPANY2],3) AS [CO#2],
FRPSDBA_FRPST100_MEMBER.M_MEMBER_STATUS AS [Member Status],
FRPSDBA_FRPST100_MEMBER.M_BENEFITS_STATUS AS [Benefits Status],
PointsForYear.R_YEAR_POINTS AS [Points Year Total Points],
IIf([R_CR_YRS_EARNED]>0,80,0) AS [Points Year Total Allowable Points],
FRPSDBA_FRPST100_MEMBER.M_PRE04_YRS_EARNED AS [Pre 04 Years Earned],
FRPSDBA_FRPST100_MEMBER.M_PST04_YRS_EARNED AS [Post 04 Years Earned],
FRPSDBA_FRPST100_MEMBER.M_TOT_BANK_YEARS AS [Banked Years],
FRPSDBA_FRPST100_MEMBER.M_TOT_YRS_SERVICE AS [Total years of service
(credited and banked)], IIf([Age55]=-1,"Y","N") AS [Over 55?],
55-[Age]+(Right(Date(),4)) AS [Year Turns 55],
Round((DateDiff("y",FRPSDBA_FRPST100_MEMBER!M_DATE_OF_BIRTH,Date())/365),0)
AS Age, [Age]>54 AS Age55
FROM (FRPSDBA_FRPSV320_RETIRE RIGHT JOIN (FRPSDBA_FRPSV250_VFIS RIGHT
JOIN (FRPSDBA_FRPST130_ASSIGN RIGHT JOIN FRPSDBA_FRPST100_MEMBER ON
FRPSDBA_FRPST130_ASSIGN.A_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) ON
FRPSDBA_FRPSV250_VFIS.F_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) ON
FRPSDBA_FRPSV320_RETIRE.VR_SSN = FRPSDBA_FRPST100_MEMBER.M_SSN) LEFT
JOIN PointsForYear ON FRPSDBA_FRPST100_MEMBER.M_SSN =
PointsForYear.R_SSN
WHERE (((FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN)<#11/1/2004#) AND
((FRPSDBA_FRPST100_MEMBER.M_TOT_YRS_SERVICE)>=1)) OR
(((FRPSDBA_FRPST130_ASSIGN.A_VOTED_IN)<#11/1/2004#) AND
((PointsForYear.R_YEAR_POINTS)>=1))
ORDER BY FRPSDBA_FRPST100_MEMBER.M_SSN;