我想优化一个应用程序,有点调度程序。我有不同状态的任务,如完成,待办事项和存档(删除后)。应用程序逻辑最多使用前两种类型,所以我应该将它们保存在同一个表中(并且只选择完成并在每次需要时执行)或者我应该只为存档项目执行复制表以使选择“更容易”因为存档的状态很少使用。
那么sqLite数据库大小是否会以某种方式影响数据库操作?我测试了大表中的select操作(整个db中只有一个),处理100K - 1M行需要很长时间
SQLite对大表没有问题,而且100万条记录并不是很大。
如果逻辑上有意义,则应该只使用多个表,性能不是问题。所以你唯一的表格看起来像这样:
tasks table
---------------------------
id (primary key)
title (indexed)
description
status (or status_id) (indexed)
一个经验法则是索引您在查询的where
子句中使用的所有列。
如果您在数据库中使用字符串作为status
,那么您可以使用另一个表并在tasks
表中使用该表的id
的外键引用它:
status table
------------
id
name