インデックスの作成時間
インデックスの作成時間
続いてインデックスの作成時間を比較します。「給与」列に対してインデックスを作成する時間をOracle、PostgreSQLのそれぞれで測定します。

給与列は数値型(integer)の列で、先ほどのテストで集計に使用した列です。こちらも集計処理の全件検索と同様の結果となりました。
インデックスの作成では該当データを検索した上で、データをソートしてインデックスを構築していきます。当然検索時の処理速度に影響されることとなり、検索部分のコスト差が大きいために、その差が現れています。
インデックスありの全件検索での集計
次に、給与列にインデックスを作成した状態で、先程のテストと同じ全件検索での集計を行い、時間を計測してみます。

結果は、インデックスなしの場合とほとんど変わりありませんでした。このテスト環境のハードウェア 構成ではディスクI/Oコストが小さかったため、インデックスのI/Oコストと全件検索時のコストに差があまりなかった事が原因です。データ件数が増えた 場合だと、もう少し差が出てくるはずです。
PostgreSQLでは多少の改善が見られるものと期待した部分もあったのですが、残念ながらほとんど同じ結果となりました。
まとめ
単純な検索での処理速度を比較した結果からは、検索処理そのものや集計での処理速度はOracleの方が高速であると言えます。少なくともPostgreSQLでは基本的な部分で検索処理のオーバヘッド(ディスクI/O以外の部分)が大きいと考えられます。
データの登録速度と並べてみると、登録処理の速いPostgreSQLと検索が速いOracle…という結果は、そのデータの格納方法とその利用における違いを顕著に現す、対照的な結果であると見ることができます。
バックナンバー
この記事の筆者
1993年某SIベンダへ入社後、Oracle、DB関連のコンサルティング、チューニング、社内案件の技術支援などを10年ほど担当。2004年ミラクル・リナックス株式会社へ入社。
筆者の人気記事
大手ブログ検索サイトがPostgreSQLからOracleへ移行を決断した理由(後編
2006年4月13日 20:00
大手ブログ検索サイトがPostgreSQLからOracleへ移行を決断した理由(前編)
2006年4月5日 20:00
PostgreSQLの適用範囲を考える 〜 管理・運用編
2005年12月1日 20:00
PostgreSQLの適用範囲を考える 〜 ベンチマークテスト
2005年8月12日 20:00
PostgreSQLの適用範囲を考える 〜 更新・削除のパフォーマンス
2005年6月20日 20:00
PostgreSQLの適用範囲を考える 〜 データ検索のパフォーマンス
2005年5月30日 20:00
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。