19得票3回答
Pagination in SQL Server

我有一个非常大的数据库,大约100 GB。我正在执行查询: select * from <table_name>; 我想只显示第100到200行。 我想了解这是如何在内部发生的。数据库是否将所有记录从磁盘中提取到内存中,并将100到400行发送回查询客户端?或者是否存在任何...

19得票2回答
分页性能与可自定义排序在数百万行数据上的表现

在我们的应用程序中,我们有一个网格,用户可以在大量记录(1000-2000万)上进行分页。该网格支持按照多个列(20+)进行升序和降序排序。许多值也不是唯一的,因此应用程序还通过id进行排序,以确保行始终出现在同一页上。例如,如果用户想按小部件大小排序(从最大开始),应用程序会生成一个类似于以...

14得票1回答
为什么我看到的是对所有行读取而不是匹配where子句的所有行进行主键查找?

我有一个类似下面的表格: create table [Thing] ( [Id] int constraint [PK_Thing_Id] primary key, [Status] nvarchar(20), [Timestamp] datetime2, [...

12得票1回答
大表的高效分页

使用PostgreSQL 10.5。我正在尝试创建一个分页系统,用户可以在各种结果之间来回切换。 为了避免使用OFFSET,我将上一页中最后一行的id作为参数p(prevId)传递。然后,我选择第一个id大于p参数值的三行数据。(如this article所述) 例如,如果上一页中最后一行...

12得票2回答
MySQL - 基于UUID/created_at的光标分页?

对于大型数据集,使用OFFSET进行分页已知会很慢,不是最佳的分页方式。更好的分页方式是使用游标,它只是一行上的唯一标识符,因此我们知道从上次离开的游标位置继续分页。 当涉及到自动递增的id值作为游标时,实现起来相当容易: SELECT * FROM users WHERE id <...

10得票2回答
基于时间戳的窗口偏移量

我正在编写一个查询,用于对社交动态进行分页显示。概念是移动应用程序将请求N个项目,并提供一个起始日期时间,我在下面称之为@CutoffTime。截止时间的目的是确定分页窗口的起始位置。我们之所以使用时间戳而不是行偏移量的原因是,时间戳可以让我们从一个一致的位置进行分页,即使在获取较旧的帖子时添...

8得票3回答
在浏览一个排序混乱的表格时,最节省成本的方法是什么?

我有一张表,有三列: HashUID1、HashUID2和Address_Name(这是一个文本形式的电子邮件地址,前两个哈希列是为了将事件参与者表与电子邮件地址关联起来而创建的。它很丑陋,几乎不能正常工作,我无法控制。请重点关注address_name索引)。 它有7800万行数据,没有正...

7得票1回答
如何推荐有效地进行连接表的排序/分页方式?

摘要:我的数据库模式很简单,但即使只有几万条记录,基本查询的性能已经成为一个问题。 数据库:PostgreSQL 9.6 简化的模式: CREATE TABLE article ( id bigint PRIMARY KEY, title text NOT NULL, sco...

6得票3回答
Postgres有时会在WHERE a IN (...) ORDER BY b LIMIT N的情况下使用较差的索引。

我们有一个包含大约50亿行的PostgreSQL表,它养成了一个不好的习惯,即在某些LIMIT操作上缺少正确的索引并进行主键扫描。 这个问题通常在ORDER BY .. LIMIT ..子句(Django分页中的常见模式)上表现出来,其中LIMIT是索引匹配结果的相对较小的子集。一个极端的例...