我正在尝试使用 php + mysql 设置某种警报机制。例如,假设我必须在一年中的不同时间缴纳一些税款。这些税收在不同年份开始和到期。
首先,我认为用当年的付款日期创建记录似乎很方便。
+---+----+------------+
|aid| id | date |
+---+----+------------+
| 1 | 1 | 2010-01-31 |
| 2 | 1 | 2011-01-31 |
| 3 | 1 | 2012-01-31 |
| 4 | 1 | 2013-01-31 |
| 5 | 1 | 2014-01-31 |
| 6 | 2 | 2012-04-30 |
| 7 | 2 | 2013-04-30 |
| 8 | 2 | 2014-04-30 |
| 9 | 2 | 2015-04-30 |
| 10| 2 | 2016-04-30 |
| 11| 2 | 2017-04-30 |
| 12| 2 | 2018-04-30 |
+---+----+------------+
因此,我可以在一个月或一周前通过类似以下的查询看到我的闹钟:
SELECT * FROM alarms WHERE date <= x_time_after_current_date
但是,从长远来看,将有数百万条记录。所以我决定像这样改变我的表结构。
+----+------------+------------+-------- -+
| id | first_date | begin_year | end_year |
+----+------------+------------+----------+
| 1 | 2010-01-31 | 2010 | 2023 |
| 2 | 2008-01-31 | 2008 | 2015 |
| 3 | 2012-01-31 | 2012 | 2015 |
| 4 | 2012-06-30 | 2012 | 2014 |
| 5 | 2005-04-30 | 2005 | 2015 |
| 6 | 2013-01-31 | 2012 | 2018 |
+----+------------+------------+----------+
但我不确定哪个是最佳实践,我应该如何为最后一个示例设计查询?