【发布时间】:2025-12-04 08:05:01
【问题描述】:
我正在构建一个程序,用于存储公司的新闻标题及其来自各种来源的时间戳。
假设公司的数量是 1000。它就像 Apple、Google、Microsoft.. 等。
所以我可以考虑两个选项。
-
一个包含许多行的表(上面的代码只是一个示例)。
CREATE TABLE news ( news_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, company VARCHAR(10) NOT NULL, timestamp TIMESTAMP NOT NULL, source TEXT NOT NULL, content TEXT NOT NULL, ... ) // I also can make company and timestamp as primary keys, and news_id will be unique key.* -
1000 个表
CREATE TABLE news_apple // and news_google, news_microsoft, news_...(x 1000) ( news_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, timestamp TIMESTAMP NOT NULL, source TEXT NOT NULL, content TEXT NOT NULL, ... )
大多数时候,我会找到某家公司的新闻。假设每家公司有超过 10000 条新闻。我想知道如果我在第一个选项中使用“WHERE”子句,它会比第二个选项慢。
哪一个在性能方面更高效,为什么?
【问题讨论】:
-
更多行。这就是关系数据库的设计目的。具有相同结构的多个表通常表示设计不佳。
-
您考虑过基于 nosql 的解决方案吗?
-
@GordonLinoff 你能给我更详细的解释吗?
-
@rmayer06 是的,但这不是一个选项。
-
这一次,我在风格问题上完全同意@GordonLinoff :)。添加更多行比添加更多列/表要容易 1000 倍。查询很快就变成了噩梦,试图将相似的表“融合”回主表,就好像它们是同一张表一样。添加列以区分行的类型。
标签: mysql sql database schema relation