Author |
Topic |
dabiouns
Starting Member
1 Post |
Posted - 2007-10-18 : 13:15:26
|
Hi, I've tried the following query in SQL SERVER 2005, SQL Express and MACCESS. select * from Table1 where drid in (SELECT DrID FROM Table2 WHERE (substring(PostalCode,1,3) IN ('B0E','B1P','B2H','B2Y','B3A','B3M','B4A','B4H','E1A','E1C','E1N','G0A', …)) and (substring(Telephone,1,3) IN ('204','250','306','403','416','418','450','506','514','519','604','613','705','780','807','819','902','905')))The query is using two table. The first one Table1 is a table with user info. The second table Table2 has the info concerning a survey. The Table1 containt approx. 6000 row and Table2 containt only 210 rowsThe table structure from the different environment(MACCESS, SQL SERVER 2005, Sql Server Express 2005) are the same. The Table1 containt the field "PostalCode" and "Telephone".When I execute this query on MACCESS and in SQL Server 2005 the result are approximately the same(Less than half second). But there a performance issue in Sql Express 2005. The query take an execution time between 7 and 9 secondes. When I add a condition using a field from tblResponsePQ2Part1 ex: QA=1like in the following query :select * from Table1 where drid in (SELECT DrID FROM Table2 WHERE (QA = 1 substring(PostalCode,1,3) IN ('B0E','B1P','B2H','B2Y','B3A','B3M','B4A','B4H','E1A','E1C','E1N','G0A', …)) and (substring(Telephone,1,3) IN ('204','250','306','403','416','418','450','506','514','519','604','613','705','780','807','819','902','905')))the query take an execution time of ~15 secondes!!!!This issue only happen in Sql Server Express, on the others cases(mean MSAccess, Sql Server) the execution time is less than half second.It’s weird because, Sql Express 2005 is supposed to be more performantthan MACCESS, and have the same performance than Sql Server Professional Edition. Please Help Me!!!!Anyone have an idea why?Mathieu Desbiens |
|
dinakar
Master Smack Fu Yak Hacker
2507 Posts |
Posted - 2007-10-18 : 13:21:54
|
Try changing the IN to JOIN.SELECT * FROM Table1 T1JOIN (SELECT DrID FROM Table2 WHERE (substring(PostalCode,1,3) IN ('B0E','B1P','B2H','B2Y','B3A','B3M','B4A','B4H','E1A','E1C','E1N','G0A', …)) and (substring(Telephone,1,3) IN ('204','250','306','403','416','418','450','506','514','519','604','613','705','780','807','819','902','905')) ) T2 ON T1.DrID = T2.DrID Dinakar Nethi************************Life is short. Enjoy it.************************http://weblogs.sqlteam.com/dinakar/ |
|
|
|
|
|