设计数据库模式(MySQL)

时间:2016-01-12 20:11:31

标签: mysql database database-schema

我正在实施一个数据库来存储我的用户的详细信息。通常我会这样创建:

UserID    metafield1   metafield2   metafield3
1         value11      value12     value13
2         value21      value22     value23
3         value31      value32     value33

但是看看Wordpress中的数据库,他们就这样做了:

UserID    metafieldname   metafieldvalue
1         metafield1      value11
1         metafield2      value12
1         metafield3      value13
2         metafield1      value21
2         metafield2      value22
2         metafield3      value23
3         metafield1      value31
3         metafield2      value32
3         metafield3      value33

从我看来,添加/编辑/删除新的元数据更容易。您不必更改表格的结构。

第二个架构中不会有空单元格。但是,对于大量行,元数据的名称将占用空间。

使用第二个架构查询速度更快吗?

我想知道第二种方法比第一种方法有什么优势?

感谢。

2 个答案:

答案 0 :(得分:0)

查询速度取决于您要搜索的字段以及该字段是否已编入索引。还取决于表中有多少行以及列的数据类型。

如果您要查询UserId = somevalue的位置,则假设两种方案中的数据类型相同,则返回值时没有明显的速度差异。

如果对元数据进行索引和查询,则会看到速度上的细微差别。

我会推荐您列出的第二个用于优化目的。

答案 1 :(得分:-1)

第二种方法最重要的优点是,如果添加更多元数据,则不必更改表的结构。从长远来看,这是一个巨大的优势。第二种方法也将简化查询语句,插入和删除语句。