速度问题, 条件放在新建Join table里和放在Where里,哪个快?
速度为什么会差这么远?   
 1>       5秒 
 declare   @UserDefinedId   varchar(10) 
 set   @UserDefinedId= 'NA-18% '   
 select   o.orderid,o.partid,orderdt,factoryid,customerid 
 From   Factorynet..Oeborder   o 
 Where   o.CommitmentUserDefinedId   like   UserDefinedId   
 2>    60秒 
 declare   @UserDefinedId   varchar(10) 
 Create   Table   #Select_UserDefinedId(OrderId   char(6),PartId   char(2)) 
 set   @UserDefinedId= 'NA-18% ' 
 Insert   into   #Select_UserDefinedId    
 		Select   OrderId,PartId   From   Oeborder   where   CommitmentUserDefinedId   like   @UserDefinedId   
 select   o.orderid,o.partid,orderdt,factoryid,customerid 
 From   Factorynet..Oeborder   o 
 Join   #Select_UserDefinedId   s   on   s.orderid=o.order   and   s.partid=o.partid
------解决方案--------------------第一層 
------解决方案--------------------第一个是直接查询速度肯定是快的 
 ------------------------------- 
 第二个: 
 创建临时表,插入数据到临时表要耗费一部分时间 
 连接是逐条匹配 
 况且你的on后面跟着两个条件 
 就要匹配2次 
 如果两个字段都有索引速度会好一点 
 -------------------------------- 
 个人臆想 
 哈哈 
 -------------------------------- 
 建议lz把两个语句用执行计划查看一下 
 看看执行计划如何
------解决方案--------------------纯JF
------解决方案--------------------  1>   5秒 
 declare @UserDefinedId varchar(10) 
 set @UserDefinedId= 'NA-18% '   
 select o.orderid,o.partid,orderdt,factoryid,customerid 
 From Factorynet..Oeborder o 
 Where o.CommitmentUserDefinedId like UserDefinedId--少了一个@变量符
------解决方案--------------------如果你的执行计划提示index scan性能肯定有点不好 
 也就是说索引扫描 
 没有有效地用到索引,简而言之就是:你的索引一点用处也没有 
 -------------------- 
 如果你的执行计划提示clustered index seek 
 就是说用到了聚集索引查询 
 性能会有很大的提高 
 -------------------- 
 再给lz一个建议 
 在你查询的所有列上面加索引 
 也就是通常所说的覆盖索引 
 也会很有效的提高性能