我们有一个系统可以执行各种复杂和简单的选择查询。
我们做了一些简单的测试,得到了这些结果:
Query 3.9 seconds :
var result = (from temp in context.model
where temp.ID == 1302
select temp).First();
Start Transaction time: 17:54:58.7073806
End Transaction time: 17:55:02.6246046
Query 3.7 seconds :
Model modelResult = context.Model.Find(1302);
Start Transaction time: 17:53:51.1995194
End Transaction time: 17:53:54.8737295
我一直在阅读试图找出最好的选择是什么。这个网站上有很多关于这个话题的讨论,但是,我还没有找到我需要的东西。
我知道查询选择是有条件的(基于查询的复杂性等),但如果我们需要一个基于不会再次使用的键的实体(这意味着,在 Find 的情况下,缓存不会)没关系,因为该查询不太可能再次被调用)是使用直接 LINQ 还是继续使用 Find 更好?
缓存 Find 结果的成本,当它不会被使用时,成本是否太高?我们简单测试的结果是否足够准确,可以假设 Find 在单个实体/键的情况下总是更快?
我没有通过关闭跟踪来测试 LINQ,这会比给出的两个示例更好吗?