Sql 如果我需要从那一行请求所有数据,列计数是否重要?
TL;DR:如果您有30个不同的值都指向同一个对象id,并且您需要全部检索它们,那么如果这些数据是在单独的行中还是在同一行(许多列)中,会有什么区别吗Sql 如果我需要从那一行请求所有数据,列计数是否重要?,sql,database,Sql,Database,TL;DR:如果您有30个不同的值都指向同一个对象id,并且您需要全部检索它们,那么如果这些数据是在单独的行中还是在同一行(许多列)中,会有什么区别吗 小背景: WordPress有一个非常有趣的数据库设置(IMO): 帖子有自己的表格,所有基本数据都是垂直“布局”(如第一个代码块) 您可能希望添加到post的所有其他相关数据都有单独的表,如第二个代码中所示 我想我理解他们在做什么——博客作者或主题建设者不想和星展混为一谈 这是我从开始到完成的第一个项目,我不是数据库专家。所以我想最好以
小背景: WordPress有一个非常有趣的数据库设置(IMO):
- 帖子有自己的表格,所有基本数据都是垂直“布局”(如第一个代码块)
- 您可能希望添加到post的所有其他相关数据都有单独的表,如第二个代码中所示
这是我从开始到完成的第一个项目,我不是数据库专家。所以我想最好以我的老朋友WordPress为例。我使用Node.js服务器、GraphQL和MariaDB数据库 项目要求每个帖子都有大量数据(单个,无法正常化),最终我会遇到这样的情况:post表中有200000行,其他表中有30倍,这就提出了一个问题: 为什么不把所有30个值都放到列而不是行中呢 我已经看了几个小时的技术教程和博客,但我仍然不能100%确定它是如何工作的:如果我在一个请求中需要下面的所有数据,我应该选择哪个“设计”?WordPress错了吗?他们只是为了方便用户而这样做(第二个有很多重复键) 我不太关心存储,我关心的是超快速读取和快速写入
Wordpress这样做是为了在产品发展过程中减少数据库更改。想象一下这种情况:如果他们必须创建一个新列来对应一个新属性,那么对于用户来说,在每次更改时,升级所需的数据库更改是多么困难。
事实上,像Wordpress这样的CMS中使用的大多数动态数据库都有这样的概念,可以方便地进行更改。其他类型的系统也会这样做 我明白,我不是想攻击某人或某事。但我的问题是:我应该选择哪条路线?WP方法是否有损于查询速度?您应该选择更适合您的目标的方法。我的意思是,如果您预见到您的解决方案在未来的新属性方面不会增长,请使用列。现在,如果您看到复杂性随着时间的推移而增长,那么动态属性表可能是最好的方法。因此,为了向OP提供针对其情况的建议,请使数据库具体化,因为您拥有完全的控制权,并将所有相关字段放在一行中。另外一个信息:如果您的数据库经过良好的调优,性能不会受到影响。此外,如果您想降低查询的复杂性,可以使用视图来隐藏底层的复杂性,甚至可以创建一个更非规范化的数据库来报告细节。
-------------------------------------------------------------------
id | post id | color | shape | weight | length | width
-------------------------------------------------------------------
1 55 blue sqare 50 110 110
-------------------------------------
id | post_id | key | value
-------------------------------------
1 55 color blue
2 55 shape sqare
3 55 weight 50
4 55 length 110
5 55 width 110