在stackoverflow上有很多sql server分页问题,他们中的很多人都在谈论使用ROW_NUMBER() OVER (ORDER BY ...) AND CTE
。一旦进入成千上万的行并开始在非主键值上添加排序并添加自定义的WHERE子句,这些方法就会变得非常不便。我有一个包含数百万行的数据集,我试图通过自定义排序和筛选来进行翻页,但是我的性能很差,甚至在我排序和筛选的所有字段上都有索引。我甚至尽可能在每个索引中包含我的SELECT列,但这几乎没有帮助,并严重臃肿了我的数据库。Microsoft SQL Server寻呼
我注意到,无论您点击什么排序标准或页码,stackoverflow分页只需要大约500毫秒。任何人都知道如何在数百万行的SQL Server 2008中高效地进行分页工作?这将包括尽可能有效地获取总行数。
我的当前查询具有完全相同的逻辑有关寻呼这个计算器的问题: Best paging solution using SQL Server 2005?
您可以发布查询的任何机会;一般原则是一个很好的人,但他在现实世界中存在问题;) – u07ch 2011-03-17 07:14:00
不在每个想要排序(或筛选)的列上添加索引,有帮助吗?这似乎很明显,但我不知道你是否尝试过。 – bart 2011-03-17 08:05:53
我确实在所有列上都有索引。超过前几千的分页后,查询时间开始线性上升... – jjxtra 2011-06-14 05:36:29