速度为什么会差这么远?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 UserDefinedId2> 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 @UserDefinedIdselect 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

解决方案 »

  1.   

    第一个是直接查询速度肯定是快的
    -------------------------------
    第二个:
    创建临时表,插入数据到临时表要耗费一部分时间
    连接是逐条匹配
    况且你的on后面跟着两个条件
    就要匹配2次
    如果两个字段都有索引速度会好一点
    --------------------------------
    个人臆想
    哈哈
    --------------------------------
    建议lz把两个语句用执行计划查看一下
    看看执行计划如何
      

  2.   

    我的表Factorynet..Oeborder里有order和partid列的复合索引,而没有CommitmentUserDefinedId索引,因为这个表很大,也有很多其他索引.所以我不想加CommitmentUserDefinedId索引,而想利用order和partid列的复合索引,但好像没什么效果,请教....
      

  3.   


    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--少了一个@变量符
      

  4.   

    如果你的执行计划提示index scan性能肯定有点不好
    也就是说索引扫描
    没有有效地用到索引,简而言之就是:你的索引一点用处也没有
    --------------------------------------------------------
    如果你的执行计划提示clustered index seek
    就是说用到了聚集索引查询
    性能会有很大的提高
    --------------------------------------------------------
    再给lz一个建议
    在你查询的所有列上面加索引
    也就是通常所说的覆盖索引
    也会很有效的提高性能