gpt4 book ai didi

sql-server - 使用 LINQ(ala TABLESAMPLE)从大型结果集中有效地选择随机行

转载 作者:行者123 更新时间:2023-12-01 06:44:23 25 4
gpt4 key购买 nike

我想从一个非常大的表(数百万行)上的复杂查询的结果中选择一些随机行。

我正在使用 SQL Server 2008,而有效执行此操作的正确方法似乎是 TABLESAMPLE条款。

注 1:我对流行的“按 NEWID() 订购”解决方案不感兴趣——它对于大表来说效率低下。

注 2:由于我的查询很复杂,如果可能的话,我不想先计算 COUNT。

注3:由于resultset很大,不想自己遍历,比如建议here .

关键是我正在使用 LINQ。具体来说,LINQ-To-Entities。

是否有一种对 LINQ 友好的方式来使用 TABLESAMPLE?

即使没有直接支持,有什么方法可以在 LINQ 中编写大部分查询,然后执行少量手动 SQL 来执行 TABLESAMPLE?

最佳答案

不是您问题的直接答案,但您可以使用此技术来选择单个行的随机百分比样本。以下查询使用 NEWID 函数返回 Sales.SalesOrderDetail 表中大约百分之一的行:

SELECT * FROM Sales.SalesOrderDetail   
WHERE 0.01 >= CAST(CHECKSUM(NEWID(), SalesOrderID) & 0x7fffffff AS float) / CAST (0x7fffffff AS int)

可能感兴趣: T-SQL: Generating Random Numbers, Random Sampling and Random ‘Goodness’

关于sql-server - 使用 LINQ(ala TABLESAMPLE)从大型结果集中有效地选择随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com