我有一个非常简单的问题,但是我找不到一个好的解决方案。
Table A:
ID_A DateStart DateEnd no_days
1 2019-02-01 2019-02-04 3
2 2019-02-04 2019-02-06 2
Table B:
ID_B ID_A Date DaysToDate
1 1 2019-02-01 10
2 1 2019-02-02 9
3 1 2019-02-03 8
4 2 2019-02-04 7
5 2 2019-02-05 6
因此,我从表A开始,并在创建了一条记录之后,为表B创建了N行。
然后在我的项目中,我需要进行加入
select * from TableA join TableB using(ID_A)
为了列出所有的日期,并使用自己的“此日期之前的天数”值。我需要加入,因为我的用户可能要搜索几天的时间,并且我需要知道此搜索涉及到TableB的行。
这一切都很好,它确实运行很快,但是数据库正在大量增长,我敢肯定必须有一种更智能的方法来解决此问题,也许有一个静态的“ Days”表,每个表仅列出一行接下来的100年里每天都会发生......但我找不到有效的解决方案,因为我需要保持速度和“ days to date”(今天的天数)值。
我需要的结果就是这种
select * from TableA join TableB using(ID_A) where DateStart between '2019-02-01' and '2019-02-05'
ID_A DateStart DateEnd no_days ID_B Date DaysToDate
1 2019-02-01 2019-02-04 3 1 1 2019-02-01 10
1 2019-02-01 2019-02-04 3 2 1 2019-02-02 9
1 2019-02-01 2019-02-04 3 3 1 2019-02-03 8
2 2019-02-04 2019-02-06 2 4 2 2019-02-04 7
您有什么提示吗?