我创建了一个经典的php博客,并且遇到了single
或两个mysql表方法的困境。
在第一种情况下,实际博客将被放置在actual
表(最多100行)内,以及archive
表内的归档帖子(最多20.000行)。
两个表都具有相同的结构。
经常在actual
表格上查询archive
并不常见。
但有时会有join
和union
个查询 - 涵盖两个表格。
从逻辑上讲,在较小的桌子上表现要好得多,但是 - 在我的情况下是否有足够的理由创建两个表而不是单个表?
还有第三个解决方案 - 包含两个分区actual - 100 rows
和archive - 20.000 rows
的单个表。
怎么办?
答案 0 :(得分:1)
您写道:
从逻辑上讲,在较小的桌子上表现要好得多
对于包含少于约一千万行的表,您对此的直觉完全不正确。 SQL的一个目的是允许从众多项目中快速检索一些项目。数千年的程序员劳动(而不是夸大其词)已经开始使这种事情变得非常快。你无法超越这种集体努力。
将您的物品放在一张桌子上。如果您需要区分活动和非活动项目,请创建一个名为active
的列或某些此类内容,并使用WHERE active=1
或某些此类查询字词检索它们。
如果您认为自己遇到了性能问题,可以在表中添加索引。读这个。 https://use-the-index-luke.com/
答案 1 :(得分:0)
在设计数据库时,不要只考虑如何存储数据;但想想所有可能的情况:
在您的情况下,archive
似乎是actual
表的子集。因此,首选一个表,其中一行用于跟踪存档文件。