栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

限制Sqlite DB中的记录数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

限制Sqlite DB中的记录数

您可以为此使用一个隐式的“ rowid”列。

假设您没有以其他方式手动删除行:

DELETe FROM yourtable WHERe rowid < (last_row_id - 1000)

您可以使用API函数或

max(rowid)

如果您不需要 正好有
1000条记录(例如,只想清理旧记录),则不必在每个插入记录上都进行记录。在程序中添加一些计数器,并每100次插入执行一次清理fi。

更新:

无论如何,您要为每个插页或每个选择支付性能。因此,选择取决于您所拥有的更多内容:INSERT或SELECts。

如果没有太多插入要关心性能,则可以使用以下触发器保留不超过1000条记录:

CREATE TRIGGER triggername AFTER INSERT ON tablename BEGIN     DELETE FROM tablename WHERe timestamp < (SELECt MIN(timestamp) FROM tablename ORDER BY timestamp DESC LIMIT 1000);END

在timestamp列上创建唯一索引也是一个好主意(以防尚未创建PK)。还要注意,SQLITE仅支持

FOR EACHROW
触发器,因此当您批量插入许多记录时,值得暂时禁用触发器。

如果INSERT太多,那么在数据库方面您将无能为力。您可以通过添加触发条件(例如)来实现不那么频繁的触发调用

AFTER INSERT WHENNEW.rowid % 100 = 0
。选择仅使用LIMIT 1000(或创建适当的视图)。

我无法预料会有多快。最好的方法是仅衡量您在特定情况下将获得的性能。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号