我们有一个mvc.net应用程序,我们是一个页面中的搜索功能。用户可以选择多个选项,然后从sql server数据库中搜索记录并以网格格式显示在页面中。所有搜索到的记录都将以排序的形式出现,并且还有分页按钮。因此,用户可以单击寻呼机按钮并转到任何页面。我们已经在sql server SP中编写了所有排序,搜索和分页登录。以下是对此
的查询INSERT INTO #TempTable
(
RowNumberCount,
Field1,
Field2
)
SELECT ROW_NUMBER()
OVER (ORDER BY
CASE WHEN @OrderBy = @Field1_ASC THEN Field1 ELSE NULL END ASC,
CASE WHEN @OrderBy = @Field1_DESC THEN Field1 ELSE NULL END DESC,
CASE WHEN @OrderBy = @Field2_ASC THEN Field2 ELSE NULL END ASC,
CASE WHEN @OrderBy = @Field2_DESC THEN Field2 ELSE NULL END DESC,
,
Field1,
Field2
FROM CTE_Table;
SELECT
Field1,
Field2
FROM #TempTable
WHERE RowNumberCount BETWEEN ((@Page_Nm- 1)*@Page_Size )+ 1 AND (@Page_Nm*@Page_Size);
我们使用了以下概念:
由于行号将应用于从UI传递的已排序列。但是当我们运行此查询时,1缺少记录需要6到8秒。我们发现在排序列中创建行号需要时间。有没有其他方法可以改善给定查询的性能。