键集分页

对结果进行分页

要一次迭代一页结果(也称为分页),有多种选择:

  • LIMIT/OFFSET分页(慢,不推荐)
  • 键集分页(快速,推荐)
  • 游标

键集分页

键集分页(也称为'查找方法')用于快速从表中获取记录子集。它通过使用WHERE子句的组合返回的记录集来实现此目的。

键集分页查询的一般模式是:

SELECT * FROM t 
  WHERE key > ${value}
  ORDER BY key
  LIMIT ${amount}

示例

假设使用客户表的数据集,可以将其加载到Hubble中

要使用键集分页获取第一页结果,请运行以下语句

select * from cust_info 
  where cust_no >0
  order by cust_no
  limit 5;
  cust_no  | cust_name |    cust_card_no    | cust_phoneno | cust_address | cust_type
-----------+-----------+--------------------+--------------+--------------+------------
  1        | 王吉       | 12022519960321531X |  15122511874 | 天津武清      | 抵押
  2        | 张贺       | 431256197306265320 |  15534343555 | 山西临汾      | 质押
  3        | 刘明       | 371452199303034312 |  18967756743 | 陕西延安      | 信用
  4        | 李华       | 52112119860621421X |  15833355455 | 湖北武汉      | 抵押
  5        | 郑青       | 213456199102275341 |  13054546567 | 江西南昌      | 质押
(5 rows)

要获取第二页结果,请运行:

select * from cust_info 
  where cust_no >5
  order by cust_no
  limit 5;
  cust_no  | cust_name |    cust_card_no    | cust_phoneno | cust_address | cust_type
-----------+-----------+--------------------+--------------+--------------+------------
  6        | 王三       | 12047419660327643X |  15854557437 | 天津北辰      | 抵押
  7        | 刘一       | 234256195606263452 |  13894858958 | 天津滨海      | 质押
  8        | 杨泰       | 541452199303034312 |  17548587733 | 河南洛阳      | 信用
  9        | 李青       | 24112119450621342X |  15634879747 | 湖北红安      | 抵押
  10       | 钱森       | 32434519900221534X |  13934745774 | 辽宁沈阳      | 质押
(5 rows)