sql—存储依赖于天数的数据的最佳方法是什么?

yvgpqqbh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(359)

存储此数据的最佳方法是:
这个problem:let say 我有table上的商店,还有他们开张的那天。
商店星期天、星期三开门
b店每天营业
c店星期四、星期五开门

我有一些解决办法,比如:
制作两张表,存储表和工作日表
创建一个包含7天列(星期日、星期一,…)的存储表,如果它们打开,则将其设置为true
创建一个表并添加一列,将它们打开的日期保存为json。
请注意:
我不需要时间,我只需要一天。
我将查询所有在星期天或星期一开门的商店,等等
我的问题是:存储这些数据的最佳方式是什么?或者如果你有别的解决办法,我会很感激的
谢谢您

xoefb8l8

xoefb8l81#

考虑到您不需要一小时的时间,并且假设您正在尝试优化的是读取性能,以及一个优雅的模式:我建议为每个存储区增加7列,在每列上键入“bit”并带有过滤索引。
根据store表的页面大小和查询工作日的频率,您可能希望将store和business days放在两个不同的表中。

  1. CREATE TABLE store (id INT PRIMARY KEY)
  2. CREATE TABLE businessDays (
  3. store_id INT NOT NULL REFERENCES store(id),
  4. sunday bit DEFAULT 0,
  5. monday bit DEFAULT 0,
  6. tuesday bit DEFAULT 0,
  7. wednesday bit DEFAULT 0,
  8. thursday bit DEFAULT 0,
  9. friday bit DEFAULT 0,
  10. saturday bit DEFAULT 0,
  11. INDEX ix_sunday (sunday) WHERE sunday = 1,
  12. INDEX ix_monday (monday) WHERE monday = 1,
  13. INDEX ix_tuesday (tuesday) WHERE tuesday = 1,
  14. INDEX ix_wednesday (wednesday) WHERE wednesday = 1,
  15. INDEX ix_thursday (thursday) WHERE thursday = 1,
  16. INDEX ix_friday (friday) WHERE friday = 1,
  17. INDEX ix_saturday (saturday) WHERE saturday = 1)

我希望这有帮助!如果您还有其他问题,请不要犹豫。:-)

展开查看全部

相关问题