首页 > 解决方案 > 如何加快大型数据库中的 LIMIT & OFFSET 查询

问题描述

我有一个可以包含多达数十亿行的表

CREATE TABLE "Log4DataUsb" (
"Time" integer primary key not null ,
"Microseconds" integer ,
"Current" integer ,
"Voltage" integer )

通常用户会想要查询特定范围内的数据,例如Time <= 123456789 and Time >= 0,因为这可能会返回数十亿行,所以我想对行进行分段并且每次只返回一个批次,例如LIMIT 10,000LIMITE 10,000 OFFSET X直到它到达这个时间范围的末尾询问。

我注意到当行数增加时,这个查询可能会很慢,即使我只想移动到下一批,执行下面的查询也需要几秒钟。

SELECT * FROM TABLE WHERE Time <= 123456789 and Time >= 0 LIMIT 10,000

SELECT * FROM TABLE WHERE Time <= 123456789 and Time >= 0 LIMIT 10,000 OFFSET 10,0000

如果数据库总共应该有 20 亿行,有什么办法可以大大提高查询性能?

标签: databasesqlite

解决方案


推荐阅读