VIEW


◎ 建立一個 VIEW

--備註:
--1. VIEW不能接收參數
--2. VIEW不能為任何欄位建立PK或FK或任何CONSTRAINT
--3. 製作一個VIEW時,一般情況下不能使用ORDER BY,除非有使用 TOP、OFFSET
--4. SELECT 的 TABLE 不能是 TEMP TABLE
CREATE VIEW vwName
WITH SchemaBinding--一般建議加這一行,以防SELECT的TABLE被刪除,但TABLE前面一定要加SchemaName
AS
(
    --SQL Script
    --e.g: SELECT * FROM [dbo].[TABLE]
    --備註:如果SELECT某個+某個欄位AS另外一個欄位(Derived Field),假若其中一個欄位的值是NULL,最後在SELECT這個VIEW的時候,該欄位(Derived Field)會是NULL
)

◎ 為VIEW建立INDEX(Clustered Index、NonClustered Index)

--備註:
--1. 如果要為View建立Index,在建立這個View時候,就得加上「WITH SchemaBinding」
--2. 僅能建立 UNIQUE CLUSTERED INDEX,不能建立 CLUSTERED INDEX
--3. 建立NonClustered Index 之前一定要建立 UNIQUE CLUSTERED INDEX
--4. Aggregation(e.g: MAX()) 不能當作VIEW的INDEX
--4. 建立VIEW需使用COUNT_BIG()而不能使用COUNT(),且須 AS 欄位別名給它
--5. 如果建立INDEX的欄位有NULL值,需在建立VIEW的時後給他'空白'或'0',總之就是不能為NULL
CREATE INDEX IX_ViewName_ColumnName
ON ViewName([Column] ASC, [Column] DESC)--可以用多個欄位組成一個叢集

results matching ""

    No results matching ""