选择“最高”的X行而不进行排序

时间:2011-03-29 15:31:13

标签: sql sql-server tsql query-optimization

我有一张包含大量数据的表格。让我们说10GB的线条,包含一堆垃圾。我需要选择具有最高amount列的X行(X通常低于10)。

如果不对整个表格进行排序,有什么方法可以做到吗?对这些数据进行排序是非常耗时的,我可以通过整个表格进行一次扫描并选择X最高值,然后保持其余部分不变。我正在使用SQL Server。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

SELECT TOP 10 Amount FROM myTable ORDER BY Amount DESC

如果它被索引,查询优化器应该使用索引 如果没有,我不知道如何避免扫描整个事情......

索引是否有用取决于您搜索的频率 您还可以考虑将该查询放入索引视图。我认为这会给你最好的利益/成本比例。