• ベストアンサー

マテリアライズドビューとスナップショットの違い

タイトルの通りなのですが、 これらは、 「実テーブルのデータを、ある条件で抜き出したデータが格納?されていて、 その条件での検索が多い場合は、実テーブルでなくこれらの方をSELECTすれば、 既にその時点で件数が絞られているので検索が早くなる・・・」 という認識でおります。 (元々はバックアップの類のためのもののようですが) 単なる呼び方の違いなのか、それぞれで実機能が違うのか、 各サイトを見ても大きな違いが見受けられなかったので・・・ よろしくお願い致します。

  • rikiou
  • お礼率95% (223/234)
  • Oracle
  • 回答数1
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.1

スナップショットはマテリアライズドビューの昔の呼び方です。 スナップショットは主に現在もしくは過去の一断面の配信を 主に扱ってきました。分散環境におけるマルチマスタ環境が代表的な例です データウェアハウスの登場でスナップショットは 実データと並行したサマリ表という使われ方も注目されはじめたので より汎化して 実体のあるビュー に位を上げたのだと思います。 主観ですが、現在ではスナップショットという呼び名は サマリ表(計算済の表)とは住み分けされて 現在の状態と比較するための対象物 という意味合いが強くなっていると思います。

rikiou
質問者

お礼

やはり呼び方ですか・・・ちょっとすっきりしました。 回答ありがとうございました。

関連するQ&A

  • データ型による検索速度の違いについて

    LAMP環境でWEBシステムの設計中です。 select文のwhere句の検索条件となるカラムにおいて、 データ型による検索速度に差があるのか?についてご教示いただけたら幸いです。 例えば顧客データのようなテーブルで「都道府県」カラムを持っているとして、 その中に格納するデータをintの1~47にした方が良いのか、それともvarcharで 北海道~沖縄県にした方が良いのか、パフォーマンスの観点から悩んでいます。 各ケースにおいて検索速度に差はあるのでしょうか? データ件数は5000超程度です。 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 「マスタ」と「テーブル」の違いとはなんでしょうか?

    マスタとテーブルの違いについて教えてください。 DBにおける、 「マスタ」と「テーブル」の違いはなんなのでしょうか? 両方とも「テーブル」であるのにも関わらず、 どうしてある特定の「テーブル」には「マスタ」という別名が付けられているのでしょうか? [参考サイト様] ttp://homepage1.nifty.com/silabel/it/master_table.html 下記のような概念の認識、分け方で合っていますでしょうか? ■マスタ  ・DBを使用するに当たって、主体となるテーブルがマスターである。  ・主に他のテーブルに対して、登録・参照処理が行われた場合に、   マスタと位置づけされたDBがWhere条件に入る。  ・システム上で良く使用するDBである。  これらによって「マスタ」と付けられている。 ■テーブル  ・あるDB上の用途によって、ジャンル分けされたデータが格納された情報の箱。  ・リレーショナルデータベースでは二次元の表として扱われる。    テーブルとはDB上でデータを格納する為の箱である。     「マスタ」と「テーブル」の違いについて、このような認識、分け方で合っていますでしょうか?

  • MySQLのInnoDBテーブルについて

    MySQLのバージョンは4.1.13-ntです。 元々MyISAMテーブルを使用してたんですが、トランザクション機能を使いたいということでInnoDBテーブルに変えたところ、検索に凄く時間がかかるようになりました。データ件数は二百万件ぐらいです。MyISAMテーブル の時は数秒でかえってきたのが、InnoDBテーブルでは何分という結果になりました。 InnoDBは早いと聞いたのですが、データが大量になると遅くなるのでしょうか?ご教授お願い致します。

  • select文でフリーズします。

    お世話になります。 oracle11.2で とあるテーブルに select * from テーブル名(条件なし) としたらフリーズする現象が起きました。 元々のテーブル内には25万行のデータがあったため 同じ構造で違う名前のテーブル(データは1行もなし)を新規作成して 同じようにselect文をなげたところこちらもフリーズしてしまいました。 構造は約50の列があり 列数を指定して検索した場合、どちらのテーブルも結果が返ってきますが すべての列を指定しようとするとフリーズしてしまいます。 どのあたりを疑えば良いでしょうか? よろしくお願いいたします。

  • SELECT文記述違いのパフォーマンス差異について

    お世話になります。 例えば以下のようなテーブルでデータ件数が100,000件あった場合、 SELECT * 条件指定無しでデータ抽出した場合と、 SELECT key 条件指定無しでデータ抽出した場合で パフォーマンスはどのぐらい変わってくるでしょうか? create table test ( key char(8) primary key, data1 int8, data2 char(20), data3 char(10), data4 date, data5 char(10) ); 参考になる情報(数値)をお持ちの方がいれば、 教えて頂けるとありがたいです。 よろしくお願い致します。

  • access2000で検索、結果の表示件数制限

    access2000で受注管理をおこなっております。 フォームから条件を指定し,クエリでテーブルを検索し結果を表示している のですが、データが多すぎて困っています。 そこでフォーム上から検索前に表示させる件数を指定する機能をつけたいと 考えています。 100件と指定したとすると、まず100件表示して次の100件を表示する、などの操作が できればいいのですがやり方がわかりません。 せめて、表示件数に達すればあとの検索はしないといった表示件数を制限する 方法だけでも教えてください。よろしくお願いします。

  • 副問い合わせの限界値はどれくらいなのでしょうか? 

    副問い合わせの限界値はどれくらいなのでしょうか?  現在下記のようなSQLを考えています。 SELECT * FROM A_TABLE WHERE a_field in ( SELECT a_field FROM B_TABLE WHERE b_field := ?c ) ; ※(便宜上、外部変数の指定を[:= ?c]としました) B_TABLEの検索に引っかかったデータをinの条件にしてA_TABLEを検索するのですが、 B_TABLEの検索で出力される結果(サブクエリで出力される件数)が 現在の理論値は平均でおおよそ1000件、最大10万件になる予定です。 これに対し、10万件での問い合わせに副問い合わせの実行はmysqlで可能なのでしょうか?  現状のテスト環境では10万件のテストデータを用意できない状況です・・・。 また、どなたか副問い合わせでのサブクエリ出力件数の限界値をご存知の方がいらっしゃいましたらご教授頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • SELECTの検索速度と、DB設計

    DB設計で悩んでいます。 ・一つのテーブルにするとカラム数が100ぐらい。 ・格納するデータはテーブルを正規化するようなものではない。 この場合のSELECTでの検索速度ですが、たとえ取り出すカラムを指定していてもカラム数が多いと検索速度に影響がでるのでしょうか? 或いは、テーブルを小分けにして、取り出すデータに応じてテーブルを結合していく方が良いのでしょうか? という感じでカラム数が検索スピードに与える影響についてどなたかご教授いただけませんでしょうか。宜しくお願いします。

    • ベストアンサー
    • MySQL
  • JAVAでテーブルの中身を見て、処理を分岐させるには

    JAVA初心者です。 JAVAで、ファイルから読み込んだデータをMySQLのテーブルに格納したいのですが、 すでにテーブルにある(キーが同じ)ならば、updateをし、 テーブル内同じキーのものがなければ、insertをしたいのですが、分岐条件の部分をどうやってかいたらよいのかわからず、上手くかけません。 select count(*) from table where key=00000; を使うのかなと思うのですが、 どうやって書いたらいいのかわかりません。 どなたか教えてください!

    • ベストアンサー
    • Java
  • 同一テーブルの同一フィールドで複数条件指定

    例を挙げます。 テーブルA 「member」 | ID | 名前 | テーブルB 「item」 | ID | 名前 | テーブルC 「item_check」 | member.ID | item.ID | というテーブルがあります。 テーブルAはメンバーで一人一つのデータが入っています。 テーブルBはメンバーが持つであろうアイテムのマスタです。 テーブルCはメンバーがどのアイテムを持っているかを示しているテーブルです。 テーブルCに関しては同じメンバーでも複数のアイテムを持つこともあるので複数のデータが入る場合もあります。 で、やろうとしているのは、 「アイテムA と アイテムBを持っているメンバー」 という検索を行いたいのです。 同じテーブル上ならば select * from member where item1 = "A" and item2 = 'B' ... ; と、いくつでも条件が指定可能なのですが、 同じテーブルの同じフィールドを同じメンバーで複数条件指定して検索することはできるのでしょうか。 私が考えたのは一回ではできないで、 まずは一つの条件を出して while でループさせて条件を付け足してやるような効率が悪そうなものです。 (少ない件数ならばいいのですが、数千~数万件の検索になりそうなので手軽にできればと思いまして・・・) アイテムは不特定なので、1個から数十個とかの検索もありえます。 何かいい手はないでしょうか。

    • ベストアンサー
    • MySQL