增强一列 280M 行的排序

问题描述 投票:0回答:1

我有一个应用程序,它在应用分页后在网格内显示 SQL Server 表的记录。用户可以过滤或将订单应用到任何列。

当该表变得太大(例如 2.8 亿条记录)时就会出现问题。当用户对其任何列应用订单时,SQL Server 开始消耗大量时间来对记录进行排序并显示网格内的前 20 条记录。

我知道如果我对其应用索引,结果会更快,但我不知道用户可以使用多少列进行排序,而且我无法应用这么多索引。

有什么方法可以提高性能吗?您愿意向我提供有关其他 DBMS 的建议。

我尝试应用有效的索引,但除了索引之外我还需要一些其他更好的解决方案。

sql sql-server indexing query-optimization sql-order-by
1个回答
0
投票

我遇到了这个确切的问题,在我的例子中使用 Datatables.js 并在服务器端获取行,给出了(错误!!)无限滚动的错觉。

我必须做一些不完整的事情才能使其可用。

  1. 监控用户对排序顺序的选择一段时间,以找出他们想要的常见排序。

  2. 捕获这些常见排序的查询,然后在 SSMS 中的真实数据而不是开发服务器上运行它们,并打开“显示实际执行计划”。写下计划建议的任何索引。

  3. 对所有流行的排序执行此操作,然后研究索引以查看它们是否有任何共同的最左边的列。

  4. 创建索引并查看计划是否有所改进。

  5. 重复,直到情况得到足够改善,用户的抱怨减少到沉闷的咆哮。

  6. 添加一些 UI 元素,让用户知道速度慢。

如果您将查询捕获逻辑保留在应用程序中,则如果用户非常需要它,您可以使用另一个索引进行响应。

要满足这种数据检索功能的用户的需求,解决起来有点麻烦。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.