php – 如何优化这个MySQL表?

前端之家收集整理的这篇文章主要介绍了php – 如何优化这个MySQL表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是为即将到来的项目.我有两张桌子 – 第一张用于记录照片,第二张用于记录照片的等级
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中的一些额外代码可以分割排名/时间(和排序),但这看起来还不错.

这是优化表格性能的正确方法吗?你会推荐什么?

第一个.期.

实际上你会失去更多.存储在int列中的时间戳将仅占用4个字节的空间.

虽然以字符串格式存储的相同时间戳将占用10个字节.

原文链接:https://www.f2er.com/php/133165.html

猜你在找的PHP相关文章