我有一张包含大量数据的表格。让我们说10GB的线条,包含一堆垃圾。我需要选择具有最高amount
列的X行(X通常低于10)。
如果不对整个表格进行排序,有什么方法可以做到吗?对这些数据进行排序是非常耗时的,我可以通过整个表格进行一次扫描并选择X最高值,然后保持其余部分不变。我正在使用SQL Server。
答案 0 :(得分:5)
在amount
上创建索引,然后SQL Server可以从中选择top 10
并执行书签查找以检索缺少的列。
答案 1 :(得分:1)
SELECT TOP 10 Amount FROM myTable ORDER BY Amount DESC
如果它被索引,查询优化器应该使用索引 如果没有,我不知道如何避免扫描整个事情......
索引是否有用取决于您搜索的频率 您还可以考虑将该查询放入索引视图。我认为这会给你最好的利益/成本比例。