【发布时间】:2017-01-09 22:53:42
【问题描述】:
假设我有一个 ANIMAL 表,
CREATE TYPE VALID_ANIMAL AS ENUM ('Dog', 'Cat', 'Pig');
CREATE TABLE IF NOT EXISTS ANIMAL (
animal_type VALID_ANIMAL,
name TEXT,
owner TEXT,
.... many more common fields
);
因此,如果此表非常大,有 100 万行混合了“Dog”、“Cat”和“Pig”,是否会减慢搜索包含“Dog”的行的速度?
或者我应该有 3 个单独的表,分别命名为 DOG、CAT 和 PIG。这样数据就已经分开了,在查询 DOG 时,我只会去 dog 表。我担心一张大表在搜索“Dog”时可能会出现过滤掉“Cat”和“Pig”的性能问题。
【问题讨论】:
-
这不是你应该做的数据库设计。您不必担心关系数据设计期间的行数。
-
我只是好奇哪种方法会更快,所以我可以在应用程序中实现:)
-
首先正确进行数据设计会更快,然后您将有更多可行的选项进行性能调整。
-
@RBarryYoung hi 所以根据设计观点,一张桌子是好的设计?
-
我想这取决于您要触发什么查询,如果您同时触发对狗、猫和其他动物的查询,那么一个表会更好,原因之一是您的查询不需要连接但如果您分别查询动物的数据,那么不同的表是有意义的
标签: sql database postgresql database-design