場景痛點
教務系統需查詢單一老師與全院老師工作量,涉及 本資料庫 3 張表 + 異資料庫 1 張教師資訊表。傳統 SQL 難以維護、效能差、邏輯混亂。
視圖為何能解決?
- 虛擬表:不儲存資料,儲存查詢定義
- 跨資料庫支援:可直接 JOIN 不同資料庫的表
- 封裝複雜度:將多表關聯、欄位篩選、業務邏輯封裝成單一「表」
- 安全與簡化:隱藏底層結構,提供統一介面
視圖優缺點權衡
優點
- 資料聚焦:只暴露需要的欄位/列
- 操作簡化:視圖即介面,應用端如操作單表
- 多重視角:同資料不同視圖滿足不同角色
- 結構解耦:底表拆分/調整時,視圖層吸收變更,應用端無感
- 安全機制:授權視圖而非基表
缺點
- 大資料量視圖查詢慢(即時運算),不如預存程序/物化視圖
- 嵌套視圖效能遞減
原則:能用預存程序解決的,優先用預存程序。
建立視圖三種方式
- SSMS 圖形化介面
CREATE VIEW T-SQL 指令
- SSMS 視圖範本
建立視圖關鍵限制
- 僅能在當前資料庫建立,最多引用 1024 表/視圖
- 基表/基視圖刪除會導致視圖失效
- 衍生欄位(函數、運算式、常數、同名欄位)必須指定別名
- 不可在視圖上建立索引、規則、預設值、觸發器
- 查詢時驗證所有物件存在、有效、不違反完整性
- 名稱唯一,不可與同使用者的表同名
實戰案例:跨資料庫工作量查詢視圖
將本地表與異資料庫 TeacherInfo 關聯,建立視圖 QueryWorkInfoByFaculty。

查詢視圖
SELECT * FROM QueryWorkInfoByFaculty;

應用層受益
- 報表、頁面直接
SELECT * FROM View
- 新增篩選條件只需
WHERE,無需改動複雜 JOIN
- 異資料庫結構變更,僅修改視圖定義
視圖是「邏輯層封裝」的利器,善用它能讓跨庫、多表、複雜業務查詢變得優雅且可維護。