【问题标题】:Efficiently storing & querying integer arrays in SQLite在 SQLite 中高效地存储和查询整数数组
【发布时间】:2018-07-18 19:43:31
【问题描述】:

我有一个混合 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 中还是在替代方案中 - 可以使这种存储和搜索更加高效且不那么复杂?

【问题讨论】:

    标签: android sqlite set sql-like


    【解决方案1】:

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

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

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

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

    SELECT * FROM Activity1 WHERE day = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2012-07-30
      • 1970-01-01
      • 2018-12-06
      • 2018-01-31
      相关资源
      最近更新 更多