链接到这个question,我尝试在JSON列上构建SQLite高性能 * 查询。
考虑具有以下模式的DB**(伪代码)**:
** Table **
id content json
1 abc [{start: some-unix-ts, end: some-unix-ts},{start: some-unix-ts, end: some-unix-ts}, between 1 to 1K+ items]
2 xyz ...
有没有可能写一个查询,获取所有的事件,其中content = xyz
,并且至少有一个事件在未来发生,或者在两个时间戳之间。在伪代码中:
SELECT * FROM events WHERE content = xyz AND start > some-unix-ts
- )高性能的意思是(没有SQL背景):如果在一个理论上很大的数据库上,它根本没有效率,现在让我来看看!
1条答案
按热度按时间9w11ddsr1#
您可以使用
json_each
将json
列中的时隙值拆分出来,然后将它们与您感兴趣的时间进行比较,从而获得所需的结果。例如(使用扩展的dbfiddle从您的前一个问题的答案):输出:
然而,这将不是特别有性能的。最好返回到原始表并查询它们:
输出:
Demo on dbfiddle
您需要用适合您的实际时隙数据的任何内容替换
start
比较。