你把两次执行的顺序调换一下, 在看看, ef是有缓存的
第一次GetAll 获取后, ef 帮你缓存了, 第二次GetAll 直接从内存中取
因为查全表不需要执行你的where条件.......如果你的guidList是一个List的话 你这里慢是慢在 在list里查id 每次都是O(n) 你把这个guidList改成hashset 或者dictionary var map=new HashSet<Guid>(guidList) or var map=guidList.ToDictionary(guid=>guid);
不行,试过很多方法了。只要是第一次去这个表里拿数据就很慢,即使是FirstOrDefault,后面不管怎么取都是比较正常的
第一次查慢,是正常的,第二次有缓存,数据库有查询缓存,EF里面也有缓存
我感觉你的写法上有问题;
GetAll()是获取全部数据了吗?然后再where条件吗?
如果是的话,建议你先where然后再.....