0

我有餐桌屋

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...

现在,我有了广告功能。所以想把房子变成广告

方法一(直接加列进行加法)

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...
   `ad_type` mediumint(2) DEFAULT NULL,
   `ad_urgency` int(11) DEFAULT NULL,   
   `ad_status` int(11) DEFAULT NULL,      

方法二(归一化,拆分成表格广告)

CREATE TABLE `house` 
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,
   `type` mediumint(2) DEFAULT NULL,
   `address` varchar(5) DEFAULT NULL,
   `county` varchar(5) ...

CREATE TABLE `Ads` 
   `idAds` int(11) NOT NULL AUTO_INCREMENT,
   `idhouse` int(11) NOT NULL AUTO_INCREMENT,   
   `ad_type` mediumint(2) DEFAULT NULL,
   `ad_urgency` int(11) DEFAULT NULL,   
   `ad_status` int(11) DEFAULT NULL,   
  • 我会做更多的 SELECT (90%) 操作,而不是 INSERT、UPDATE、DELETE (10%)
  • SELECT 操作将全部基于ad_type、ad_urgencyad_status 等变量。
  • 我考虑了很多性能。

我应该使用哪种方法?
使用方法 1(SELECT without join)是否比方法 2(SELECT with join)更快?
如果更快,多少?很多 ?

4

1 回答 1

1

标准化有很多优点。

  • 它可以帮助您避免冗余。
  • 它使您的数据库结构灵活。
  • 它可以帮助您避免异常。
  • 复杂的查询通常更容易。
  • 它最大限度地减少您的数据

……还有更多。

查询的速度不能仅仅由数据结构轻易决定,它受到许多不同方面的影响,如数据库配置、服务器硬件、索引、数据加载等等。

但是由于更少的数据通常意味着更快的查询(有或没有连接):选择 normalzied 方法。接管系统的数据库管理员将感谢您。

于 2013-03-13T08:15:25.860 回答