哪个更有效:一个长单表还是分布表?为什么?

Sta*_*arx 5 mysql database-design

这个问题都与性能有关,如果答案是针对我提供的案例,我将不胜感激.

哪种表现更合适?

  • 创建一个包含太多字段的表
  • 创建多个表并将类似字段分发给它们

案例:广泛的Web CMS模块

模式1:很长但只有一张桌子

cms
-----------------------------------------------
Id
Title
Description
Images
Order
Status
Publish
meta_keywords
meta_description
meta_author
Run Code Online (Sandbox Code Playgroud)

Cleary,大多数像joomla这样的开源CMS使用上述模式.但我认为,这种模式正在扼杀RDBMS的精神.我们可以轻松地将特定文章的内容,配置和元素分隔到不同的表格.如下所示

模式2:很多但相关的表格

Cms_content         cms_meta        cms_configuration
---------------------------------------------------------------------------
Id                  id              id          
Title               content_id      content_id
Description         keywords        status
Content             description     order
Images              author          publish
Run Code Online (Sandbox Code Playgroud)

注意:这种情况下的关系是一对一的

哪种方式适合?为什么选择一个长而一个表,或者为什么不在单个表上选择分布式表?

Tud*_*tin 5

我能想到的唯一可能导致非规范化数据(一个包含许多列的表)的可能原因是:

  • 编写SQL JOIN的懒惰
  • 读取语句可能的性能改进

我喜欢一直使用标准化版本,因为:

  • 我可以确定数据的完整性
  • 我可以轻松地从数据库中提取信息(例如,有多少帖子有一些元数据,有多少不同的元数据等)

  • 为什么你说'非规范化数据(一列有很多列)?所有字段都属于**同一实体**.因此单表**也被标准化** (2认同)
  • @Starx:在真正需要之前不要进行优化.过早的优化bla-bla-bla,你知道;-) (2认同)