使用Idbset的where进行数据查询,比linq查询要慢好多,测试用它查询数据,数据库有三千条数据,查询约3s,用linq查询只需要0.1s,这不是一个级别的啊!
难道是我用错了,求大神指导
在实现类中的代码:
public abstract class BaseDAL<T> : IBaseDAL<T> where T : class { public DbContext baseContext; public IDbSet<T> objectSet; public BaseDAL(DbContext context) { this.baseContext = context; this.objectSet = this.baseContext.Set<T>(); } public virtual T FindByID(object id) { return this.objectSet.Find(id); } }
linq语句:
public List<wygl_tenement_RentMaster> GetDataById(int id) { var query = from a in db.table1 where a.ID.Equals(id) select a; return query.ToList(); }
别管这个.你用数据库监视工具看看2个的sql分别执行多少时间就行了.
web是可扩展的
性能差肯定存在的,至于具体性能数据没有太多关注也没有再实际中测试过。
大多数对读性能要求比较高的,都不会使用类似EF这样的ORM框架,而是更倾向于轻量级的ORM(dapper)工具或者直接IDataReader
3000条数据中查询一条数据用3S,肯定是你写错了的。
除非你的数据库在美国,你在天朝,使用的是14400的MODEM拨号连接...
扯啥ORM性能都是扯淡...
兄台,我代码已经贴 出来了,数据库是阿里云服务器
我linq查询的速度一点问题没有,就是想搞明白为什么用idbset就会慢
@beggar_: 对不起,我错了。
iDBSet.Find确实慢,不是数据库的原因。
是设计上的考量。别问我咋回事,一大堆说明在网上,你慢慢自己看吧。
你能不用尽量别用FIND吧。
试试cyq.data