0

私はテーブルハウスを持っています

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

今、私は広告機能を持っています。だから家を広告に持ち込みたい

方法1(追加用の列を直接追加する)

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,      

方法2(正規化、テーブル広告に分割)

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,   
  • INSERT、UPDATE、DELETE(10%)の代わりに、より多くのSELECT(90%)操作を実行します
  • SELECT操作はすべて、ad_type、ad_urgency、ad_statusなどの変数に基づいています
  • パフォーマンスを重視しています。

どの方法を使用すればよいですか?
方法1(結合なしのSELECT)を使用する方が方法2(結合ありのSELECT)よりも高速ですか?
より速い場合、どのくらいですか?多くの ?

4

1 に答える 1

1

正規化には多くの利点があります。

  • 冗長性を回避するのに役立ちます。
  • これにより、データベース構造が柔軟になります。
  • 異常を回避するのに役立ちます。
  • 通常、複雑なクエリの方が簡単です。
  • それはあなたのデータを最小化します

...そしてさらにいくつか。

クエリの速度は、データ構造だけでは簡単に判断できません。データベース構成、サーバーハードウェア、インデックス作成、データロードなど、さまざまな側面の影響を受けます。

ただし、データが少ないということは、通常、クエリが高速であることを意味するため(結合の有無にかかわらず)、正規化されたアプローチを選択してください。システムを引き継ぐデータベース管理者に感謝します。

于 2013-03-13T08:15:25.860 に答える