速度为什么会差这么远?
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 [email protected]
------解决方案--------------------
如果你的执行计划提示index scan性能肯定有点不好
也就是说索引扫描
没有有效地用到索引,简而言之就是:你的索引一点用处也没有
--------------------
如果你的执行计划提示clustered index seek
就是说用到了聚集索引查询
性能会有很大的提高
--------------------
再给lz一个建议
在你查询的所有列上面加索引
也就是通常所说的覆盖索引
也会很有效的提高性能