只是想知道使用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对此有一些特殊的优化?),而第二个应该检索项目数(我相信在恒定时间内运行)然后只检索单个元素。