日期:2014-05-18  浏览次数:20417 次

Linq 的速度
//不知下面的语句如何,会不会全表扫描?
C# code
var select =( from ps in user.TUsers
// where (ps.UserName.StartsWith("t"))
 orderby ps.id descending
 select new { id = ps.id.ToString(), name = ps.UserName, pass = ps.Password }).Skip(2).Take(5);


相比如下的sql语句 ?
SQL code
select *from
(
   select  TUsers.id,TUsers.UserName,TUsers.Password,Row_Number()over(order by id desc) as rn, from TUsers  
)as ps
where(ps.rn>=@Index and ps.rn<@Index+@Count)


哪个要快点? 因为这个 用户表的数据量很大,优化很重要 。

------解决方案--------------------
Sql Server Profiler
------解决方案--------------------
你这语句不会全表扫描
------解决方案--------------------
其实这个都被吐糟过无数次了,linq跟数据库没直接关系
------解决方案--------------------
记录下前后时间 对比下嘛
------解决方案--------------------
linq不是转换成sql的吗?

那当然是直接用sql来的快
------解决方案--------------------
SQL code

select a.ID,a.Name from TUsers  a 
 inner join  ( 
    select rownum,ID,Name,TypeID,BrandID  from (select ROW_NUMBER() over(order by id) rownum,ID,Name,TypeID,BrandID
     from TUsers  ) t where  rownum between 0 and 10) as b
      on a.ID=b.ID order by b.rownum

------解决方案--------------------
linq比lz的sql快
------解决方案--------------------
调试时看下生成的SQL语句
------解决方案--------------------
那是相当的快!