首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按时间顺序存储行的有效方法?

按时间顺序存储行的有效方法?
EN

Stack Overflow用户
提问于 2012-06-18 08:16:51
回答 1查看 117关注 0票数 0

我有一个这样的表:

代码语言:javascript
运行
复制
CREATE TABLE IF NOT EXISTS grades(_id, timestamp, extra);

我想在“时间戳”上创建一个索引,所以我正在做:

代码语言:javascript
运行
复制
CREATE INDEX idx_timestamp ON grades(timestamp); 

我想根据时间戳一次选择20条记录,然后:

代码语言:javascript
运行
复制
SELECT * FROM grades WHERE timestamp > 123 ORDER BY timestamp ASC LIMIT 20;

那么,有没有更有效的方式来定义"timestamp“列呢?我只是猜测,将其指定为索引列是我们所能做的,而为排序顺序指定"ASC“是没有意义的--或者我可以让sqlite存储按时间戳预先排序的记录吗?

我基本上是在尝试实现一个分页系统,每次选择一个包含20个项目的按时间顺序排列的页面。

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2012-06-18 08:25:32

这很好。它将使用索引进行排序,因此它将提高速度。不过,根据您正在执行的操作,您可能需要缓存一些记录。

SELECT * FROM grades WHERE timestamp > 123 ORDER BY timestamp ASC LIMIT 200;

我们现在可以一次获得200个,但现在我们将让javascript或服务器来处理分页。基本上,您将跟踪分页的位置,然后仅当需要再次访问数据库时才会进行分页。此外,通过对时间戳使用更有限的WHERE子句,它实际上相当快和有效。比使用限制N,M更好。

如果使用第二种方法,则还可以缓存该查询,具体取决于该查询被命中的频率。所以,如果多个人一直在查询某个东西,数据库会缓存它,它会很快返回,因为它已经在那里了。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11075803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档