October 7, 2010 at 7:11 am
I have a query that takes about a minute to run. Is it possible to make this query run faster?
SELECT DISTINCT
SUBSTRING(CONVERT(VARCHAR(6), REPLICATE('0',6 - DATALENGTH(LTRIM(STR(NAME_MASTER.id_num, 6))))
+ LTRIM(STR(NAME_MASTER.id_num, 6))), 1, 6) + ' ' + 'Y'
+ SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30)))
+ RTRIM(SUBSTRING(NAME_MASTER.first_NAME, 1, 30)) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.first_nAME, 1, 30)))
+ RTRIM(SUBSTRING(ISNULL(NAME_MASTER.middle_name, ''), 1, 1))
+ SPACE(1 - LEN(SUBSTRING(ISNULL(NAME_MASTER.MIDDLE_NAME, ''), 1, 1)))
+ ISNULL(RTRIM(CONVERT(VARCHAR(10), biograph_master.birth_dte, 101)),' ') + ' ' + SUBSTRING(address_master.ADDR_LINE_1, 1, 45)
+ SPACE(45 - LEN(SUBSTRING(address_master.ADDR_LINE_1, 1, 45)))
+ (SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45))
+ SPACE(45 - LEN(SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1,45)))
+ SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30) + SPACE(30 - LEN(SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30)))
+ SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2) + SPACE(2 - LEN(SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2)))
+ SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10) + SPACE(10 - LEN(SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10)))
+ 'S ' + ' ' + ' ' + SUBSTRING(STUD_TERM_SUM_DIV.DIV_CDE, 1, 5)
+ SPACE(5 - LEN(SUBSTRING(stud_term_sum_div.div_cde, 1, 5)))
+ SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5) + SPACE(5 - LEN(SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5)))
+ SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75) + SPACE(75 - LEN(SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75)))
+ SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1) + SPACE(1 - LEN(SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1)))
FROM NAME_MASTER
LEFT OUTER JOIN STUD_TERM_SUM_DIV
ON STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN BIOGRAPH_MASTER
ON BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN ADDRESS_MASTER
ON ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN TRANS_HIST
ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE STUD_TERM_SUM_DIV.YR_CDE = @yr_cde
AND STUD_TERM_SUM_DIV.TRM_CDE = @trm_cde
AND TRANS_HIST.CHG_FEE_CDE = 'HI'
AND ADDRESS_MASTER.ADDR_CDE = '*LHP'
EXCEPT
SELECT DISTINCT
SUBSTRING(CONVERT(VARCHAR(6), REPLICATE('0', 6 - DATALENGTH(LTRIM(STR(NAME_MASTER.id_num, 6))))
+ LTRIM(STR(NAME_MASTER.id_num, 6))), 1, 6) + ' ' + 'Y'
+ SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30)))
+ RTRIM(SUBSTRING(NAME_MASTER.first_NAME, 1, 30)) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.first_nAME, 1, 30)))
+ RTRIM(SUBSTRING(ISNULL(NAME_MASTER.middle_name, ''), 1, 1))
+ SPACE(1 - LEN(SUBSTRING(ISNULL(NAME_MASTER.MIDDLE_NAME, ''), 1, 1)))
+ ISNULL(RTRIM(CONVERT(VARCHAR(10), biograph_master.birth_dte, 101)),' ') + ' ' + SUBSTRING(address_master.ADDR_LINE_1, 1, 45)
+ SPACE(45 - LEN(SUBSTRING(address_master.ADDR_LINE_1, 1, 45)))
+ (SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45))
+ SPACE(45 - LEN(SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45)))
+ SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30) + SPACE(30 - LEN(SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30)))
+ SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2) + SPACE(2 - LEN(SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2)))
+ SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10) + SPACE(10 - LEN(SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10)))
+ 'S ' + ' ' + ' ' + SUBSTRING(STUD_TERM_SUM_DIV.DIV_CDE, 1, 5)
+ SPACE(5 - LEN(SUBSTRING(stud_term_sum_div.div_cde, 1, 5)))
+ SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5) + SPACE(5 - LEN(SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5)))
+ SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75) + SPACE(75 - LEN(SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75)))
+ SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1) + SPACE(1 - LEN(SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1)))
FROM NAME_MASTER
LEFT OUTER JOIN STUD_TERM_SUM_DIV
ON STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN BIOGRAPH_MASTER
ON BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN ADDRESS_MASTER
ON ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN TRANS_HIST
ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE ((STUD_TERM_SUM_DIV.YR_CDE = '2010')
AND (STUD_TERM_SUM_DIV.TRM_CDE = 'fa')
AND (TRANS_HIST.CHG_FEE_CDE = 'HI')
AND (ADDRESS_MASTER.ADDR_CDE = '*LHP')
)
AND BIOGRAPH_MASTER.UDEF_1A_1 = 'W'
Thanks
October 7, 2010 at 7:34 am
You could start from the EXCEPT, that generally involves a SORT DISTINCT on the two inputs.
I think you should calculate the output field AFTER the except.
As a side suggestion, nobody will take a look at your question if it contains 100+ rows of unformatted SQL, no table definition, no query plan.
Take a look at this article and find out how to post performance problems[/url].
I formatted your query in case you want to edit your initial post and replace it there.
SELECT DISTINCT
SUBSTRING(CONVERT(VARCHAR(6), REPLICATE('0',6 - DATALENGTH(LTRIM(STR(NAME_MASTER.id_num, 6))))
+ LTRIM(STR(NAME_MASTER.id_num, 6))), 1, 6) + ' ' + 'Y'
+ SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30)))
+ RTRIM(SUBSTRING(NAME_MASTER.first_NAME, 1, 30)) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.first_nAME, 1, 30)))
+ RTRIM(SUBSTRING(ISNULL(NAME_MASTER.middle_name, ''), 1, 1))
+ SPACE(1 - LEN(SUBSTRING(ISNULL(NAME_MASTER.MIDDLE_NAME, ''), 1, 1)))
+ ISNULL(RTRIM(CONVERT(VARCHAR(10), biograph_master.birth_dte, 101)),' ') + ' ' + SUBSTRING(address_master.ADDR_LINE_1, 1, 45)
+ SPACE(45 - LEN(SUBSTRING(address_master.ADDR_LINE_1, 1, 45)))
+ (SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45))
+ SPACE(45 - LEN(SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1,45)))
+ SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30) + SPACE(30 - LEN(SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30)))
+ SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2) + SPACE(2 - LEN(SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2)))
+ SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10) + SPACE(10 - LEN(SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10)))
+ 'S ' + ' ' + ' ' + SUBSTRING(STUD_TERM_SUM_DIV.DIV_CDE, 1, 5)
+ SPACE(5 - LEN(SUBSTRING(stud_term_sum_div.div_cde, 1, 5)))
+ SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5) + SPACE(5 - LEN(SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5)))
+ SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75) + SPACE(75 - LEN(SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75)))
+ SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1) + SPACE(1 - LEN(SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1)))
FROM NAME_MASTER
LEFT OUTER JOIN STUD_TERM_SUM_DIV
ON STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN BIOGRAPH_MASTER
ON BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN ADDRESS_MASTER
ON ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN TRANS_HIST
ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE STUD_TERM_SUM_DIV.YR_CDE = @yr_cde
AND STUD_TERM_SUM_DIV.TRM_CDE = @trm_cde
AND TRANS_HIST.CHG_FEE_CDE = 'HI'
AND ADDRESS_MASTER.ADDR_CDE = '*LHP'
EXCEPT
SELECT DISTINCT
SUBSTRING(CONVERT(VARCHAR(6), REPLICATE('0', 6 - DATALENGTH(LTRIM(STR(NAME_MASTER.id_num, 6))))
+ LTRIM(STR(NAME_MASTER.id_num, 6))), 1, 6) + ' ' + 'Y'
+ SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30)))
+ RTRIM(SUBSTRING(NAME_MASTER.first_NAME, 1, 30)) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.first_nAME, 1, 30)))
+ RTRIM(SUBSTRING(ISNULL(NAME_MASTER.middle_name, ''), 1, 1))
+ SPACE(1 - LEN(SUBSTRING(ISNULL(NAME_MASTER.MIDDLE_NAME, ''), 1, 1)))
+ ISNULL(RTRIM(CONVERT(VARCHAR(10), biograph_master.birth_dte, 101)),' ') + ' ' + SUBSTRING(address_master.ADDR_LINE_1, 1, 45)
+ SPACE(45 - LEN(SUBSTRING(address_master.ADDR_LINE_1, 1, 45)))
+ (SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45))
+ SPACE(45 - LEN(SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45)))
+ SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30) + SPACE(30 - LEN(SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30)))
+ SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2) + SPACE(2 - LEN(SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2)))
+ SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10) + SPACE(10 - LEN(SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10)))
+ 'S ' + ' ' + ' ' + SUBSTRING(STUD_TERM_SUM_DIV.DIV_CDE, 1, 5)
+ SPACE(5 - LEN(SUBSTRING(stud_term_sum_div.div_cde, 1, 5)))
+ SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5) + SPACE(5 - LEN(SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5)))
+ SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75) + SPACE(75 - LEN(SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75)))
+ SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1) + SPACE(1 - LEN(SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1)))
FROM NAME_MASTER
LEFT OUTER JOIN STUD_TERM_SUM_DIV
ON STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN BIOGRAPH_MASTER
ON BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN ADDRESS_MASTER
ON ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN TRANS_HIST
ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE ((STUD_TERM_SUM_DIV.YR_CDE = '2010')
AND (STUD_TERM_SUM_DIV.TRM_CDE = 'fa')
AND (TRANS_HIST.CHG_FEE_CDE = 'HI')
AND (ADDRESS_MASTER.ADDR_CDE = '*LHP')
)
AND BIOGRAPH_MASTER.UDEF_1A_1 = 'W'
-- Gianluca Sartori
October 7, 2010 at 7:42 am
Ok, thanks. I will add the data definitions and the execution plan.
October 7, 2010 at 7:47 am
Looks the same to me but I didn't look really closely.
SELECT DISTINCT
SUBSTRING(CONVERT(VARCHAR(6), REPLICATE('0', 6 - DATALENGTH(LTRIM(STR(NAME_MASTER.id_num, 6))))
+ LTRIM(STR(NAME_MASTER.id_num, 6))), 1, 6) + ' ' + 'Y'
+ SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.LAST_NAME, 1, 30)))
+ RTRIM(SUBSTRING(NAME_MASTER.first_NAME, 1, 30)) + SPACE(30 - LEN(SUBSTRING(NAME_MASTER.first_nAME, 1, 30)))
+ RTRIM(SUBSTRING(ISNULL(NAME_MASTER.middle_name, ''), 1, 1))
+ SPACE(1 - LEN(SUBSTRING(ISNULL(NAME_MASTER.MIDDLE_NAME, ''), 1, 1)))
+ ISNULL(RTRIM(CONVERT(VARCHAR(10), biograph_master.birth_dte, 101)),' ') + ' ' + SUBSTRING(address_master.ADDR_LINE_1, 1, 45)
+ SPACE(45 - LEN(SUBSTRING(address_master.ADDR_LINE_1, 1, 45)))
+ (SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45))
+ SPACE(45 - LEN(SUBSTRING(ISNULL(address_master.ADDR_LINE_2, ''), 1, 45)))
+ SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30) + SPACE(30 - LEN(SUBSTRING(ISNULL(address_master.CITY, ''), 1, 30)))
+ SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2) + SPACE(2 - LEN(SUBSTRING(ISNULL(address_master.STATE, ''), 1, 2)))
+ SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10) + SPACE(10 - LEN(SUBSTRING(ISNULL(address_master.ZIP, ''), 1, 10)))
+ 'S ' + ' ' + ' ' + SUBSTRING(STUD_TERM_SUM_DIV.DIV_CDE, 1, 5)
+ SPACE(5 - LEN(SUBSTRING(stud_term_sum_div.div_cde, 1, 5)))
+ SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5) + SPACE(5 - LEN(SUBSTRING(ISNULL(biograph_master.citizen_of, ''), 1, 5)))
+ SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75) + SPACE(75 - LEN(SUBSTRING(ISNULL(NAME_MASTER.EMAIL_ADDRESS, ''), 1, 75)))
+ SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1) + SPACE(1 - LEN(SUBSTRING(ISNULL(BIOGRAPH_MASTER.GENDER, ''), 1, 1)))
FROM NAME_MASTER
LEFT OUTER JOIN STUD_TERM_SUM_DIV
ON STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN BIOGRAPH_MASTER
ON BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN ADDRESS_MASTER
ON ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
LEFT OUTER JOIN TRANS_HIST
ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE TRANS_HIST.CHG_FEE_CDE = 'HI'
AND ADDRESS_MASTER.ADDR_CDE = '*LHP'
AND
(
(
STUD_TERM_SUM_DIV.YR_CDE = '2010'
AND STUD_TERM_SUM_DIV.TRM_CDE = 'fa'
AND BIOGRAPH_MASTER.UDEF_1A_1 = 'W'
)
OR
(
STUD_TERM_SUM_DIV.YR_CDE = @yr_cde
AND STUD_TERM_SUM_DIV.TRM_CDE = @trm_cde
)
)
October 7, 2010 at 7:52 am
My format is not staying when I paste it in. Is there a different tool I can use?
October 7, 2010 at 7:54 am
Remove spaces from these tags:
[/code ]
October 7, 2010 at 8:18 am
My query was a brain fart - it isn't logically the same.
October 7, 2010 at 1:16 pm
I was able to figure it out myself.
select distinct substring(convert(varchar(6), replicate('0',6-datalength(ltrim(str (NAME_MASTER.id_num,6))))
+ ltrim(str(NAME_MASTER.id_num,6))),1,6)
+ ' '
+ 'Y'
+ substring(NAME_MASTER.LAST_NAME,1,30)+space(30-len
(substring(NAME_MASTER.LAST_NAME,1,30)))
+ rtrim(substring(NAME_MASTER.first_NAME,1,30))+space(30-len
(substring(NAME_MASTER.first_nAME,1,30)))
+ rtrim(substring(isnull(NAME_MASTER.middle_name,''),1,1))+ space(1-len
(substring(isnull(NAME_MASTER.MIDDLE_NAME,''),1,1)))
+ isnull(rtrim(CONVERT(varchar(10),biograph_master.birth_dte,101)),' ')
+ ' '
+ substring(address_master.ADDR_LINE_1,1,45)+ space(45-len
(substring(address_master.ADDR_LINE_1,1,45)))
+ (substring(isnull(address_master.ADDR_LINE_2,''),1,45))+ space(45-len
(substring(isnull(address_master.ADDR_LINE_2,''),1,45)))
+ substring(ISNULL(address_master.CITY,''),1,30)+ space(30-len
(substring(ISNULL(address_master.CITY,''),1,30)))
+ substring(ISNULL(address_master.STATE,''),1,2)+ space(2-len
(substring(ISNULL(address_master.STATE,''),1,2)))
+ substring(ISNULL(address_master.ZIP,''),1,10)+ space(10-len
(substring(ISNULL(address_master.ZIP,''),1,10)))
+ 'S '
+ ' '
+ ' '
+ substring(STUD_TERM_SUM_DIV.DIV_CDE,1,5) + space(5-len
(substring(stud_term_sum_div.div_cde,1,5)))
+ substring(isnull(biograph_master.citizen_of,''),1,5)+ space(5-len
(substring(isnull(biograph_master.citizen_of,''),1,5)))
+ substring(isnull(NAME_MASTER.EMAIL_ADDRESS,''),1,75)+ space(75-len
(substring(isnull(NAME_MASTER.EMAIL_ADDRESS,''),1,75)))
+ substring(isnull(BIOGRAPH_MASTER.GENDER,''),1,1)+ space(1-len
(substring(isnull(BIOGRAPH_MASTER.GENDER,''),1,1)))
from NAME_MASTER left outer join STUD_TERM_SUM_DIV on STUD_TERM_SUM_DIV.ID_NUM = NAME_MASTER.ID_NUM
left outer join BIOGRAPH_MASTER on BIOGRAPH_MASTER.ID_NUM = NAME_MASTER.ID_NUM
left outer join ADDRESS_MASTER on ADDRESS_MASTER.ID_NUM = NAME_MASTER.ID_NUM
left outer JOIN TRANS_HIST ON TRANS_HIST.ID_NUM = NAME_MASTER.ID_NUM
WHERE stud_term_sum_div.ID_NUM not in (select ID_NUM from BIOGRAPH_MASTER where udef_1a_1 ='W')
and stud_term_sum_div.yr_cde =:yr_cde
and STUD_TERM_SUM_DIV.TRM_CDE =:trm_cde
AND TRANS_HIST.CHG_FEE_CDE = 'HI'
and ADDRESS_MASTER.ADDR_CDE = '*LHP'
October 8, 2010 at 1:14 am
Well done, and thanks for sharing.
-- Gianluca Sartori
Viewing 9 posts - 1 through 8 (of 8 total)
You must be logged in to reply to this topic. Login to reply