document - key - value
我必须在 SQLite 数据库中保存很多(超过 50 000 行) 。我担心的是:这些值可以是文本的或数字的(有日期、字符串、数字等)。我必须以两种方式请求我的基地:
- 文档的所有值####
- 或使用比较运算符
我想到了两种可能的解决方案:
解决方案1:
单个表:
key(text) | type(one of text/date/float) | value(text)
并在我需要比较时使用显式转换(例如,
SELECT * FROM mytable WHERE (CAST(value as float) < "2010-01-01 00:00:00") AND (type='date')
或
SELECT * FROM mytable WHERE (CAST(value as float) < 17.5) AND (type='float')
我喜欢这个解决方案:
- 很容易获得所有值
我不喜欢这个解决方案:
- 我必须制作很多(可能)昂贵的演员表
解决方案2:
三个表:
- 文本值:
key(text) | value(text)
- 浮动值:
key(text) | value(float)
- 日期值:
key(text) | value(datetime)
我喜欢这个解决方案:
- 没有更多的演员表
我不喜欢这个解决方案:
- 获取所有值的成本为 3 次选择和一个联合
- 我觉得这不太优雅
那么问题
来了,您向我推荐了哪些解决方案?为什么?您还有其他解决方案要提出吗?