sql - 选择 'highest' X 行而不排序

标签 sql sql-server t-sql query-optimization

我有一个包含大量数据的表。假设有 10GB 的行,其中包含一堆垃圾。例如,我需要选择 amount 列最高的 X 行(X 通常低于 10)。

有什么方法可以在不对整个表进行排序的情况下做到这一点吗?对如此大量的数据进行排序非常耗时,我可以一次扫描整个表并选择 X 个最高值,并让其余的保持不变。我正在使用 SQL Server。

最佳答案

amount 上创建索引,然后 SQL Server 可以从中选择前 10 个,并执行书签查找以检索丢失的列。

关于sql - 选择 'highest' X 行而不排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475024/

相关文章:

sql - 如何根据SQL中前一行的值增加列的值

sql-server - SQL - 过滤日期 X 天数

SQL 2008 FILESTREAM - 如何在更改数据库之前检查数据库是否已启用文件流

performance - Azure 云平台上的 T-SQL 过程性能不佳

sql - 转义 SQL 中的特殊字符

sql - 然后将查询添加到子查询不会产生任何结果

MySQL:通过将位于两个单独表中的价格和数量列相乘来计算餐厅数据库中每个订单的总价

sql - 如何重置数据库中所有列的排序规则?

sql - Nvarchar 列值加倍,如何检测并修复此问题?

sql - PIVOT 的 FOR 部分中的表达式