我有一个表Buy里面有十万条记录,要与其它三个表进行关联。但每次读取Buy这个表时候,只取1000条记录。现在的问题是
A:我是先取出1000条记录后再与其它表进行关联呢,
B:还是先与其它三个表关联后再取1000条记录。下面是我写的测试代码:declare @strSQL1 varchar(1000);
declare @strSQL2 varchar(1000);
declare @strSQL3 varchar(1000);
set @strSQL1='(select top 1000 old.ID,old.title,old.type,old.SmallClassID,old.shi,old.qu from old order by where old.SmallClassID=68 RegDate desc,id desc) as old'
set @strSQL2='SELECT old.ID,old.Title,old.Type,old.SmallClassID,shi.shi,qu.qu FROM ('+@strSQL1+' INNER JOIN shi ON old.shi=shi.id ) INNER JOIN SmallClass1 on old.SmallClassID=SmallClass1.id INNER JOIN qu ON old.qu=qu.id;'set @strSQL3='SELECT top 1000 old.ID,old.Title,old.Type,old.SmallClassID,shi.shi,qu.qu FROM (((old INNER JOIN shi ON old.shi=shi.ID) INNER JOIN SmallClass1 on old.SmallClassID=SmallClass1.ID) INNER JOIN qu ON old.qu=qu.id) where old.SmallClassID=68 Order by old.RegDate Desc,old.ID Desc;'execute(@strSQL2)/*方法A*/
execute(@strSQL3)/*方法B*/我在sql查询分析器里面测试的时候,不稳定,有时候A的执行时间快,有的时候又慢了.主要是指CPU的执行时间。我想着应该是A的效率会更高一些,但又测试不出来,请教各位高手给指点一下。
A:我是先取出1000条记录后再与其它表进行关联呢,
B:还是先与其它三个表关联后再取1000条记录。下面是我写的测试代码:declare @strSQL1 varchar(1000);
declare @strSQL2 varchar(1000);
declare @strSQL3 varchar(1000);
set @strSQL1='(select top 1000 old.ID,old.title,old.type,old.SmallClassID,old.shi,old.qu from old order by where old.SmallClassID=68 RegDate desc,id desc) as old'
set @strSQL2='SELECT old.ID,old.Title,old.Type,old.SmallClassID,shi.shi,qu.qu FROM ('+@strSQL1+' INNER JOIN shi ON old.shi=shi.id ) INNER JOIN SmallClass1 on old.SmallClassID=SmallClass1.id INNER JOIN qu ON old.qu=qu.id;'set @strSQL3='SELECT top 1000 old.ID,old.Title,old.Type,old.SmallClassID,shi.shi,qu.qu FROM (((old INNER JOIN shi ON old.shi=shi.ID) INNER JOIN SmallClass1 on old.SmallClassID=SmallClass1.ID) INNER JOIN qu ON old.qu=qu.id) where old.SmallClassID=68 Order by old.RegDate Desc,old.ID Desc;'execute(@strSQL2)/*方法A*/
execute(@strSQL3)/*方法B*/我在sql查询分析器里面测试的时候,不稳定,有时候A的执行时间快,有的时候又慢了.主要是指CPU的执行时间。我想着应该是A的效率会更高一些,但又测试不出来,请教各位高手给指点一下。
如果逻辑上面允许,你可以尝试将inner join 换成 left outer join,会快很多
我想达到的目的应该是一样的。4楼的朋友,换成这个left Outer join要快一些,能说明一下原因吗?sql知识欠缺,多谢了