Linq——哪个查询更快

本文关键字:查询 Linq | 更新日期: 2023-09-27 17:50:51

我想知道这两个中哪一个更好:

1: context.Threads.Where(thread => thread.Id == threadId).Select(thread => thread.Posts).(...)

2: context.Posts.Where(post=> post.thread.Id == threadId).Select().(...)

两者有什么区别吗?

Linq——哪个查询更快

您还需要检查,除了有多少线程和帖子之外,两个查询正在生成什么SQL,以及它们在SQL Profiler中分别花费多长时间。

顺便说一句,我对你的两个问题都有疑问。我假设你正在使用实体框架(基于我看到你问的其他问题),所以你的Post类应该已经在那个表上有一个ThreadID(基于我在这里看到的导航属性,你应该在你的数据库中的Post表上有一个ThreadID字段)。在这种情况下,下面的查询可能更适合您的需要:

context.Posts.Where(p => p.threadID == threadId);

通过这样做,您将删除任何提及的Threads表,这将意味着EF将不必使用任何连接语句来获取您正在请求的信息。因为它不包括线程表,这应该是最快的方式去从一个线程获得所有的帖子。

这取决于有多少线程和多少帖子。