这是一个即将进行的项目。我有两个表格 - 第一个表格跟踪照片,第二个表格跟踪照片的排名。
Photos:
+-------+-----------+------------------+
| id | photo | current_rank |
+-------+-----------+------------------+
| 1 | apple | 5 |
| 2 | orange | 9 |
+-------+-----------+------------------+
照片排名会定期变化,以下是跟踪它的表格:
Ranks:
+-------+-----------+----------+-------------+
| id | photo_id | ranks | timestamp |
+-------+-----------+----------+-------------+
| 1 | 1 | 8 | * |
| 2 | 2 | 2 | * |
| 3 | 1 | 3 | * |
| 4 | 1 | 7 | * |
| 5 | 1 | 5 | * |
| 6 | 2 | 9 | * |
+-------+-----------+----------+-------------+ * = current timestamp
每个等级都被跟踪以进行报告/分析。 [编辑] 用户将随时访问统计数据。 我与一位在这个领域有经验的人交谈,他告诉我像上面那样存储等级是正确的方式。但我还不太确定。
问题在于数据冗余。将会有成千上万的照片。最近照片的排名每小时变化多次(几分钟内),但老照片的排名变化较少。按此速度,表格将在几个月内拥有数百万条记录。由于我没有处理大型数据库的经验,这让我有点紧张。
我想到了这个:
Ranks:
+-------+-----------+--------------------+
| id | photo_id | ranks |
+-------+-----------+--------------------+
| 1 | 1 | 8:*,3:*,7:*,5:* |
| 2 | 2 | 2:*,9:* |
+-------+-----------+--------------------+ * = current timestamp
这意味着需要在PHP中编写一些额外的代码来分割等级/时间(以及排序),但我认为这看起来不错。
这是否是优化表格性能的正确方法?你有什么建议吗?