database - 如何加快大型数据库中的 LIMIT & OFFSET 查询
问题描述
我有一个可以包含多达数十亿行的表
CREATE TABLE "Log4DataUsb" (
"Time" integer primary key not null ,
"Microseconds" integer ,
"Current" integer ,
"Voltage" integer )
通常用户会想要查询特定范围内的数据,例如Time <= 123456789 and Time >= 0
,因为这可能会返回数十亿行,所以我想对行进行分段并且每次只返回一个批次,例如LIMIT 10,000
,LIMITE 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 亿行,有什么办法可以大大提高查询性能?
解决方案
推荐阅读
- scala - 无法在我自己的代码/函数中使用加特林表达式语言
- python - Beeware'公文包创建'要求开罗> = 1.15.10
- react-native - 如何将滚轮选择器菜单更改为 React Native with Expo 中的下拉菜单?
- ios - CFDictionaryGetValue 崩溃的原因?
- javascript - 如何在 Firebase 身份验证电子邮件中发送 window.location.pathname?
- reactjs - 将 React 类组件转换为反应钩子
- javascript - 如何从 chrome 扩展中获取当前选项卡的“document.cookie”?
- android - ListView 在输出屏幕上不可见
- python - 使用 DateOffset 的 python 问题
- apache-spark - 为什么我不能使用“cat file1.parquet file2.parquet > result.parquet”合并多个 parquet 文件?