我有两张表有百万条记录

时间:2015-06-16 08:11:09

标签: sql sql-server-2008

我有两张表有百万条记录。我需要应用排序,分页(最多100条记录)并加入这些表。查询需要3-8秒才能得出结果。请建议更好的方法来做到这一点

这是我的查询:

; WITH TempResult AS ( SELECT ROW_NUMBER() OVER( ORDER BY col1 desc ) AS Row, col12 FROM table1 po WITH (NOLOCK) INNER JOIN table2 PV WITH(NOLOCK)  on po.col2=PV.col3  WHERE   PV.col1 = 70 AND    PV.col4 in(11, 73, 74, 75, 76, 77, 79, 80) AND PV.col5 IN (23) ) SELECT *,4910093 AS TotalRows FROM TempResult WHERE Row >= 1 AND Row <=100

3 个答案:

答案 0 :(得分:0)

使用到目前为止提供的内容......

CASE WHEN @partitionBy_1 = part1 AND @partitionBy_2 = part2 [...] THEN @row_number:=@row_number+1 ELSE @row_number:=1 END AS i , @partitionBy_1:=part1 AS P1 , @partitionBy_2:=part2 AS P2 [...] FROM ( SELECT @row_number:=0,@partitionBy_1:=null,@partitionBy_2:=null[...] ) as x 移除IN并更改为PV.col5

在第二个WHERE子句中添加了=

BETWEEN

答案 1 :(得分:0)

在表格中使用索引。时间会急剧下降。

答案 2 :(得分:0)

我有以下2点与您分享以下内容。

1)更多索引也可能影响您的表现。请从表格中识别并删除未使用的索引。

2)如果您使用索引视图,那么您可以将结果集存储在tempdb中,当用户再次执行查询时,可以使用相同的结果集并快速撤销。

请参阅以下链接。 http://www.codeproject.com/Articles/199058/SQL-Server-Indexed-Views-Speed-Up-Your-Select-Quer