表有很多列或许多小表?

yay*_*zis 0 mysql sql sqlite

我创建了一个有30列的表.

CREATE TABLE "SETTINGS" (
  "column1" INTEGER PRIMARY KEY,
  ...
  ...
  "column30"
)
Run Code Online (Sandbox Code Playgroud)

但是,我可以对它们进行分组并创建不同的表,在这些表中,它们可以具有主表的外键.哪种方式最好?或者列的数量很小,所以我会遵循哪种方式?

Dav*_*INO 5

这取决于您经常做的数据和查询.

最适合一张大桌子

  • 如果您需要始终提取所有列
  • 如果您需要同时更新许多字段
  • 如果所有字段或全部都没有空值

最适合许多小桌子

  • 如果数据是"稀疏的",则意味着没有多少列具有您可以想象的值,可以将它们拆分到不同的表中,并且只有在不存在空值的情况下才在子表中创建记录
  • 如果一次只提取少量相关字段
  • 如果您一次只更新相关字段
  • 每个列的名称更好(例如,代替domicile_address和residence_address,您可以在两个表的住宅和住所中使用两个具有命名地址的列)

问题是通常你可以根据情况使用这两种解决方案.必须进行使用分析才能选择正确的分析.