「DBを正規化すると遅くなる」は誤解,実証実験の結果が公開に (ITPro)

今日見つけたんだけど去年の記事だったりする。実験の詳細はココ
題名を見て「ほほー」と思って読んでみたのだが何かおかしい。特にこの部分を読んで頭の中は疑問符でいっぱいに。

実証実験の結果,データベース上の単一テーブルを対象に検索した場合,いずれのパターンも2〜3ミリ秒で処理を終えた。一方,3つ程度のテーブルにわたりデータを検索した場合,正規化したパターンでは,5000万件のデータを90ミリ秒で検索できた。だが,非正規化したパターンでは,500万件のデータ検索に14秒かかった。

なんで非正規化してる方も JOIN してるんだ?
比較対象おかしくないか?


この記事は、とあるスレで紹介されていたのだが、書き込んだ人にボロクソにけなされていたんですよ。で実際、読んでみると確かに違和感ありまくり。ITPro も変なのを記事にしたなぁ、と思ってたのだがよくよく考えて気がついた。
この違和感の原因は、この実験の前提条件とおいらが考えてる前提条件が違っているからだ、と。


「非正規化された」パターンなんて書いてあるから、てっきり元は正規化されていたテーブルをパフォーマンスを考慮して非正規化しました、ってな事だと思ったのだが、どうやら最初から正規化されていない場合の話らしい。
道理で非正規化な方のテーブルはありえない構成になってると思った。


この実験についてちょいと検索してみると同じように誤解している人が結構いるみたいだ。この人達は実際にテーブル設計した経験のある人達なんだろうな。
まぁ、勘違いするのも無理は無い。おいらにしても、正規化されていない RDB のテーブル設計なんて想定の範囲外だったからなぁ。
「非正規化された」なんて書かずに「正規化されていない」って書けばまだ誤解も少なかったんだろうけど。


あれ?という事は、世の中には RDB 設計する際に一度も正規化を行わない人達がいるって事?(汗