android - 在 SQLite 中高效地存储和查询整数数组

标签 android sqlite set sql-like

我有一个混合的 Cordova Android 移动应用程序,它在 SQLite 数据库中记录用户 Activity 。每个行条目都有帮助描述 Activity 性质的列。其中一个列记录了一周中不同日期的三个子 Activity ,我将这三个子 Activity 表示为一个整数数组 [0..6,7..13,14..20] .此外,我希望能够区分“正常”日子和恰好是公共(public)假期的 Activity 。我通过在数组中记录一个负条目来做到这一点。为了使这一点更清楚,这里有一个例子

[0,-2,9,13,-18,20]

代表

  • 周日的子 Activity A
  • 周二公共(public)假期的子 Activity A
  • 子 Activity B周三周六
  • 公共(public)假期周五的子 Activity C
  • 星期六的子 Activity C

这相对简单 - 我可以将数组存储为 JSON。但是,我还希望能够尽可能高效地查询该集合的成员资格。我能想到的唯一方法是使用 LIKE 条件。例如

SELECT * FROM TABLE WHERE activity_column LIKE '%-2%'

我希望返回所有在星期二公共(public)假期记录 Activity 的行。

我怀疑这可能会奏效。但是,对于 Android 数据库,我是一个新手。我知道 SQLite 是默认的解决方案。是否有一个选项 - 无论是在 SQLite 中还是在替代方案中 - 可以使这种存储和搜索更高效且更简单?

最佳答案

这一切都取决于您如何设计 sql 库。

一种方法可能是使用 3 个表,每个表对应一个 Activity 。每个中的键可以是当天的时间戳,然后您可以为 int 数据的 json 数组设置列。

您还可以添加一个额外的生活质量列,例如“day”,您可以在其中保留星期几的 int 表示形式。

这样,如果您想要在星期二注册的 Activity1 的数据,您只需查询

SELECT * FROM Activity1 WHERE day = 1

关于android - 在 SQLite 中高效地存储和查询整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682079/

相关文章:

sql - 在SQLite中限制结果

swift - SQLite Insert 在 swift 中无法正常工作

php - SQLite不支持drop; Laravel单元测试使用什么

java - 在 JRE 中使用什么算法将 ArrayList<T> 转换为 LinkedHashSet<T>

c - C中整数集合的简单实现

android - 如何添加真正的加载屏幕

java - Android:公历问题

Symfony2 可捕获的 fatal error : Argument 1 passed to . .. 必须是给定的...整数的实例,在

android - AlarmManager,手机休眠时不调用闹钟

android - 移动支付库转账问题