我正在创建一个经典的php博客,对于single或两个mysql表的方法有一个进退两难的境地。
在第一种情况下,实际的博客放在actual表中(最多100行),存档的帖子放在archive表中(最多20.000行)。
这两个表具有相同的结构。
对actual表的查询非常频繁,而对archive表的查询则不是很频繁。
但有时会有join和union查询-涵盖这两个表。
从逻辑上讲,在较小的表上性能要好得多,但是-在我的例子中,创建两个表而不是一个表是足够的理由吗?
还有第三种解决方案-带有两个分区actual - 100 rows和archive - 20.000 rows的单表。
该怎么办呢?
发布于 2018-04-11 19:38:55
你写道:
从逻辑上讲,在较小的表上性能要好得多
恕我直言,对于包含少于一千万行的表,您对此的直觉是完全不正确的。SQL的一个目的是允许从许多项目中快速检索几个项目。数千年的程序员劳动(毫不夸张)已经使这类事情变得非常快。你将无法智胜集体的努力。
将您的项目放在一个表中。如果需要区分活动项和非活动项,可以创建一个名为active的列或类似的列,并使用WHERE active=1或类似的查询条件检索它们。
如果您认为自己有性能问题,可以向表中添加索引。看看这个。https://use-the-index-luke.com/
发布于 2018-04-11 19:39:23
在设计数据库时,不要只考虑如何存储数据;还要考虑所有可能的情况:
如果不同的人有不同的视图和不同的权限,您将如何检索和更新information?
在您的例子中,archive似乎是actual表的一个子集。因此,最好使用一个表,其中包含一行,用于跟踪归档文件。
https://stackoverflow.com/questions/49773940
复制相似问题