基本 CREATE VIEW,封裝常用查詢、簡化權限控管、隱藏資料表結構。語法簡單,此處不贅述。
標準視圖不支援參數,利用 內嵌資料表值函數 實現「帶參數的視圖」:
CREATE FUNCTION fnTestView (@m_id INT)
RETURNS TABLE
AS
RETURN (
SELECT * FROM 視圖名稱 WHERE 條件 = @m_id
)
使用方式如同資料表:
SELECT * FROM fnTestView(2)
優點:可在 FROM 子句中直接引用、查詢計畫內嵌優化、參數化執行計畫重用。
在視圖上建立 唯一叢集索引,SQL Server 將視圖結果實體化儲存,查詢時直接讀取索引而非重新計算,多表 JOIN 場景效能大幅提升。
CREATE VIEW dbo.vtUsers
WITH SCHEMABINDING
AS
SELECT dbo.tUsers.userid, dbo.tUsers.username, dbo.tUsers.passWord,
dbo.tUsers.question, dbo.tUsers.answer, dbo.tUsers.email, dbo.tUsers.realname,
dbo.tUsers.sex, dbo.tUsers.birthday, dbo.tUsers.country, dbo.tUsers.city,
dbo.tUsers.address, dbo.tUsers.zip, dbo.tUsers.tele, dbo.tUsers.exdate,
dbo.tUsers.totalfund, dbo.tUsers.ordertotal, dbo.tUsers.jifen, dbo.tUsers.pid,
dbo.tUsers.agentid, dbo.tUsers.agentid2, dbo.tUsers.agentid3, dbo.tUsers.status,
dbo.tUsers.checkmod, dbo.tUsers.account, dbo.tUsers.bank, dbo.tUsers.logip
FROM dbo.tUsers
WHERE dbo.tUsers.status = 1 -- 篩選條件固定
-- 建立唯一叢集索引 (具體化)
CREATE UNIQUE CLUSTERED INDEX IX_vtUsers_userid ON dbo.vtUsers (userid)
WITH SCHEMABINDING 綁定結構描述SELECT *,需明確列出欄位COUNT_BIG(*)OUTER JOIN、DISTINCT、UNION、子查詢等複雜多表 JOIN、彙總報表、頻繁查詢且資料變動較少的場景,索引視圖可將查詢時間從秒級降至毫秒級。維護成本為 DML 觸發時同步更新索引,適合「讀多寫少」業務。