按GUID排序与跳过(随机(0,计数))随机输入的性能

时间:2017-05-24 10:32:20

标签: c# sql-server performance entity-framework random

只是想知道使用Entity Framework访问SQL Server中的随机条目的一些性能问题。

我在很多地方推荐的常用解决方案是使用

db.Table.OrderBy(x => Guid.NewGuid()).FirstOrDefault()

我想知道的是,使用

更有效率
var skip = random.Next(0, db.Table.Count());
db.Table.OrderBy(x => x.Id).Skip(skip).FirstOrDefault()

由于第一个替代方案依赖于对表中的每个条目进行随机重新排序(除非SQL Server对此有一些特殊的优化?),而第二个应该检索项目数(我相信在恒定时间内运行)然后只检索单个元素。

0 个答案:

没有答案