我对 TABLESAMPLE 的使用的理解是它返回结果集中前 n% 的行,其中 TABLESAMPLE(n)
所以我写了以下查询来检查(因为我正在学习 T-SQL)
SELECT FirstName,
MiddleName,
LastName
FROM Person.Person TABLESAMPLE(10)
SELECT FirstName,
MiddleName,
LastName
FROM Person.Person TABLESAMPLE(10 PERCENT)
Run Code Online (Sandbox Code Playgroud)
每次执行查询时,每个查询都会返回不同数量的行。
所以我显然不理解TABLESAMPLE。有人能解释一下吗?
简短的回答是TABLESAMPLE不能保证返回您指定的行数(或 %),因为它基于页面而不是行,并返回它标识的页面中的所有行。除非您的表格只有固定宽度的列,否则根据百分比或行数拉出的页面可能包含非常不同的行数。
您可以使用该REPEATABLE选项使其更加一致,但这仍然不会使其返回正确的行数。如果您只是想检索随机行的确切数量或百分比,请使用:
SELECT TOP (10) -- or 10 PERCENT
columns
FROM dbo.table
ORDER BY NEWID();
Run Code Online (Sandbox Code Playgroud)
小智 0
TableSample() 不保证返回您指定的数字或%。我发现它可以返回 0 行,少于您请求的行数,多于您指定的行数。
我在 Northwind 的 Orders 表上运行了这个查询,该表有 829 行。
select * from orders TableSample(10 percent)
Run Code Online (Sandbox Code Playgroud)
在我运行此查询的不同时间,我得到了 124, 42,82, 85,0, 0, 84...
| 归档时间: |
|
| 查看次数: |
11418 次 |
| 最近记录: |