介绍

DAS API 方法最多只返回 1000 条记录。如果您需要检索超过 1000 项,您将需要对记录进行分页。这是通过多次 API 调用并遍历多个数据“页面”来实现的。我们支持两种机制:基于页面的分页和键集分页。
我们建议初学者使用基于页面的分页。这是最简单且最好的入门方式。键集分页推荐给需要高效查询大(50 万以上)数据集的高级用户。

排序选项

使用 DAS API,您可以按不同字段对数据进行排序:
  1. id: 按资产 ID 的二进制排序(默认)。
  2. created: 按资产创建日期排序。
  3. recent_action : 按资产最后更新日期排序(不推荐)。
  4. none: 不对数据进行排序(不推荐)。
禁用排序将获得最快的结果,但由于数据未排序,分页时可能会出现不一致的结果。

分页选项

基于页面

使用此方法,用户指定页码和每页所需的项目数。要迭代到下一页,增加页码。这对于大多数用例来说简单、直观且快速。
使用页面需要数据库遍历所有项目,直到到达下一页。例如,如果您请求第 100 页和页面大小为 1000,数据库必须遍历前 100 万条记录才能返回您的数据。 因此,不推荐对大型数据集使用基于页面的分页。Keyset分页更适合这些类型的工作负载。

Keyset

使用此方法,用户通过提供过滤数据集的条件来定义页面。例如,您可以说:“获取所有ID > X但ID < Y的资产”。用户可以通过在每次调用中修改X或Y来遍历整个数据集。我们提供两种keyset分页方法:
  1. 基于游标 – 使用更简单但灵活性较低。
  2. 基于范围 – 更复杂但非常灵活。
Keyset分页仅在按id排序时支持。

基于游标

没有任何分页参数的DAS查询将返回一个游标。您可以将游标提供给DAS API以从上次中断的地方继续。
在撰写本文时,游标将是响应的最后一个资产ID;然而,游标设计是灵活的,可以支持任何字符串。

基于范围

要跨范围查询,您可以指定before和/或after。查询本质上与“获取所有在X之后但在Y之前的资产”相同。您可以通过更新每次调用的before或after参数来遍历数据集。

使用Keyset的并行查询(高级)

需要查询大型数据集(例如,整个压缩NFT集合)的高级用户必须出于性能原因使用基于keyset的分页。以下示例展示了用户如何通过划分Solana地址范围并利用before/after参数进行并行查询。这种方法快速、高效且安全。如果您有任何问题或需要帮助,请随时在Discord上联系我们!