この過度に単純化された例について:
このデータベーススキームでは
+--------------+ +-------------------+
| MASTER_TABLE | | FILES_TABLE |
+-----+--------+ +-----+------+------+
| nID | field | | nID | meta | BLOB |
+-----+--------+ +-----+------+------+
| 1 | ... | | 1 | ... | ... |
+-----+--------+ +-----+------+------+
このようなビューを作成すると、次のようになります。
CREATE VIEW myView AS
SELECT master.*, file.meta
FROM master_table master
LEFT JOIN files_table file
USING (nid)
クエリ時に未使用の列BLOBが読み取られmyView
ますか?(次のように読みます:master_tableのみをクエリするよりも、ビューをクエリする方がはるかに遅くなります)
列BLOBはファイルの保存に使用されるため、これを求めています。そもそもテーブルを2つに分割したのは、master_tableのクエリを高速化するためです。
免責事項:
データ構造を設計する際、プロジェクトマネージャは、データに添付されたファイルをファイルシステムではなくデータベースに保存することを決定しました。
私は、データベースとファイルシステムへのファイルの保存に関する多くの熱狂的な議論をよく知っていますが、私が言ったように、それは私によって決定されておらず、決定を変更する力もありません。