
No.2ベストアンサー
- 回答日時:
>100万行のテーブルのビューを作っても、ハードディスクを全く消費しない
DB格納スペースとしてはそうですが、ビュー経由で検索したときにORDER BY、GROUP BY、DISTINCTなどを行いソートが発生すれば、当然、作業用のメモリが消費されます。また、インデクスのキー以外の列を検索したり、ジョインでインデクスを有効利用できなければ、やはり作業用のメモリが消費されます。
作業用のメモリは、一時的なファイルとして、OSやRDBMSによりHDDに吐き出されることはあります。
>テーブルをJOINしたVIEWを作ったとき、そのVIEWがSELECTされる度に、毎回JOINするので、パフォーマンスアップにはならない
「ビューを経由したから」という意味では、性能改善には直結しません。
ただし、よく利用される検索パターンであったりして、DBバッファ上にデータが残っていて、結果的に実I/O減になることはあるかも知れません。
また、TEXT型やBLOB型などは、1行の情報が物理的には複数行に分割して格納されるので、ビューを経由することで、「不必要にそういった列を操作する」といった無駄は省けるかも知れません。
100万件規模のデータから、ジョインして絞り込んだ結果を、Webサービスで頻繁に利用するなら、絞り込んだ結果を実体のある表に格納しておけばどうでしょうか?
当初考えていた「ビューでジョイン」ということは、「そのビュー経由では更新しない」ということ(多くのRDBMSの制限で、MySQLも同じ)になりますから。
データの反映間隔、反映方法などの検討が必要になりますけどね。
ありがとうございました。
上記のご回答、完璧には理解していませんが、なんとなく(75%ほど)は理解しました。
> 絞り込んだ結果を実体のある表に格納しておけば・・・
それは、同じデータを別々のテーブルに重複して登録するということでしょうか?
もしそうであれば、いわゆる正規化というのは、実際の業務では理想にすぎないということでしょうか?
実務経験に乏しくて、他の方がどのようにしてるのか、想像がつきません・・・。
ともかく、ご回答ありがとうございました。
VIEWはテーブルのコピーではないということは分かりました。ありがとうございます。
No.3
- 回答日時:
>もしそうであれば、いわゆる正規化というのは、実際の業務では理想にすぎないということでしょうか?
業務で通常使用するテーブルは、当然、正規化します。
大規模なシステムでそれらのテーブル群を直接、多量のユーザから参照、更新、追加、削除などが行われると性能を十分出せない場合があります。
そのため、レプリカを作って、一方を更新系、他方を参照系のみといった運用はよく行われることです。
「ジョインの結果をWebサービス中に、なるべく高パフォーマンスで参照させたい」なら、他のテーブルからジョインした結果を参照専用のテーブルに格納し、そのテーブルを参照させるようにする運用も考えられるということです。
更新等は基のテーブルで行い、定期的に参照専用のテーブルに反映させます。
ただ、ジョインした結果が100万件といった単位で、繰り返し参照されるようなデータでないなら、この方式は効果はありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Windows 10 Corsair SSDが遅い (2)WDに比べて 3 2023/04/25 11:21
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MYSQLで異なるテーブル間のデー...
-
MySQLのテーブルに、CSV形式の...
-
条件によって抽出するデータを...
-
複数表での集計値について
-
Access無いけど.mdbが見たい!
-
ACCESS 2003について
-
access 特定のレコード数までエ...
-
MySQLである項目の値の種類を求...
-
updateのパラメータを即値でな...
-
速度向上。
-
1つのSQL文で文字列を置換する...
-
ビューのソートについて
-
MySQLの容量を増やしたい
-
MySQLやSQliteの中のデータ検索...
-
EXCELデータからACCESSデータの...
-
Load Data INFILE構文について
-
データ量が多すぎると、テーブ...
-
Access リレーションのある項...
-
ORA-01401が表示され、データが...
-
データ保持の方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
アクセス レコードセットを更...
-
Accessのテーブルデータを一気...
-
accessでレコード更新直後の反...
-
マテリアライズドビューとスナ...
-
結合テーブルでINSERTする方法...
-
ユニオンクエリで複数ファイル...
-
ORA-01401が表示され、データが...
-
ERROR1062:Duplicate entry.......
-
住所のDBテーブル、マスターの...
-
Accessでの稼働日数計算の方法
-
ACCESSで容量が50MBになった...
-
VBAでSQLServerへのODBC接続
-
ODBC接続で新しいレコードを追...
-
処理の途中で停止させ、再開さ...
-
「クリップボードにコピーされ...
おすすめ情報