怎么优化这条带in的sql语句
SELECT   DISTINCT   ProjectNo,   ProjectName,      FROM   Project   WHERE   ProjectManager= 'admin '   OR   ProjectNo   IN    
 (SELECT   TaskNo   FROM   TeamWorkManage   WHERE   Manager= 'admin '   )   
 in是加在or后面的,如果不是的话呢,可以考虑用连接, 
 但是现在我只能想到用exists来优化,但是效果不是很明显,还有什么方法来进行优化呢?
------解决方案--------------------SELECT DISTINCT ProjectNo, ProjectName 
 from ( 
 select ProjectNo, ProjectName 
 FROM Project WHERE ProjectManager= 'admin '  
 union all 
 select a.ProjectNo, a.ProjectName 
 FROM Project a,TeamWorkManage b WHERE b.Manager= 'admin ' and 
  a.ProjectNo=b.TaskNo 
 ) as t     
 --估计效果也不行
------解决方案--------------------没必要用exists
------解决方案--------------------或者试下:   
 select ProjectNo, ProjectName 
 FROM Project WHERE ProjectManager= 'admin '  
 union 
 select a.ProjectNo, a.ProjectName 
 FROM Project a,TeamWorkManage b WHERE b.Manager= 'admin ' and 
  a.ProjectNo=b.TaskNo   
 ---- 
 这个没道理比IN慢
------解决方案--------------------看看查询计划,也许Sql Server已经做了优化。
------解决方案--------------------1. 首先SELECT DISTINCT ProjectNo, ProjectName FROM Project WHERE ProjectManager= 'admin ' 这个语句执行时间是多长?如果效率比较差,就要优化你的索引了。 
 2. 你最后取出来的记录有多少条,几千,几万,还是几十万?如果没有必要一次取这么多(例如可以分页等),可以考虑用这种方式做: 
 select distinct ProjectNo from Project where ProjectManager= 'admin ' 
 union all 
 select distinct TaskNo as ProjectNo from TeamWorkManage WHERE Manager= 'admin ' 
 如果每次只需要取1000-2000以下的记录,并且ProjectNo在Project表中能够命中索引,并且索引的usability比较高,用这个ProjectNo集合再去取一次数据速度就会很快 
------解决方案--------------------数据库在查询的过程中In是很消耗系统资源的。在万不得已的情况下还是不要用了.一般的情况下上面的SQL语句可以尝试用表连接的方式试试,也许可以提高速度。