有效存储&在SQLite中查询整数数组

时间:2018-02-08 09:36:20

标签: android sqlite set sql-like

我有一个混合的Cordova Android移动应用程序,它在SQLite数据库中记录用户活动。每个行条目都有列,有助于表征活动的性质。一个这样的列在一周的不同日期记录三个子活动,我将其表示为三个子活动的整数数组[0..6,7..13,14..20]。此外,我希望能够区分"正常"几天和几天恰好是公众假期。我是通过在数组中记录一个否定条目来实现的。为了使这更清楚,这是一个例子

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

代表

  • 星期日的子活动A
  • 星期二公众假期的子活动A
  • 星期三的子活动B&星期六
  • 星期五公众假期的子活动C
  • 星期六的子活动C

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

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

我期望在周二公众假期记录活动的所有行返回。

我怀疑这可能会奏效。但是,对于Android数据库,我是一个新手。我知道SQLite是默认解决方案。是否有一个选项 - 无论是在SQLite中还是在替代方案中 - 都可以呈现这种存储和放大器。搜索更有效,更少复杂?

1 个答案:

答案 0 :(得分:0)

这一切都归结为你如何设计你的sql库。

一种方法可能是拥有3个表,每个表一个。每个中的键可以是当天的时间戳,然后您可以为int数据的json数组添加列。

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

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

SELECT * FROM Activity1 WHERE day = 1