91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MSSQL索引視圖怎么用

發布時間:2021-11-10 09:25:14 來源:億速云 閱讀:156 作者:小新 欄目:關系型數據庫

這篇文章將為大家詳細講解有關MSSQL索引視圖怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1)    確保索引視圖參考的表的set options都是正確的;

2)    確保創建表和視圖前會話的set option是正確的;

3)    確保視圖定義是確定性的;

4)    確保要以WITH SCHEMABINDING option創建視圖;

5)    確保首先在視圖上創建唯一簇索引;

6)    上面提到的set options正確值如下所示:

?  ANSI_NULLS                       ON

?  ANSI_PADDING                     ON

?  ANSI_WARNINGS*                  ON

?  ARITHABORT                        ON

?  CONCAT_NULL_YIELDS_NULL       ON

?  NUMERIC_ROUNDABORF           OFF

?  QUOTED_IDENTIFIER                 ON

1)    運行CREATE INDEX命令的用戶必須是視圖的屬主; 

2)    創建索引時,IGNORE_DUP_KEY option必須被設置為OFF(默認值);

3)    視圖定義中的表名必須包含模式名,例如:schema.tablename

4)    視圖中參考的用戶自定義函數必須以WITH SCHEMABINDING option創建;

5)    視圖中參考的任何用戶定義的函數名必須包含模式名,例如: schema.function

6)    用戶定義后函數的數據存取屬性必須是NO SQL,并且,外部存取屬性必須是NO

7)    通用語言運行時Common language runtime (CLR)函數可以出現于視圖的select list中,但其不能是簇索引鍵列,同時,CLR函數也不能出現于視圖的where子句和連接操作的on子句中。

8)    視圖中CLR函數和CLR用戶自定義類型的方法必須是下列的屬性設置:

?  DETERMINISTIC = TRUE

?  PRECISE = TRUE

?  DATA ACCESS = NO SQL

?  EXTERNAL ACCESS = NO

9)    視圖必須以WITH SCHEMABINDING option創建;

10)  視圖必須僅參考同一個數據庫中的基表。視圖中不能參考其他視圖。

11)  視圖定義中的select語句不能包含下述T-SQL元素:

?  COUNTROWSET

?  functions (OPENDATASOURCE, OPENQUERY, OPENROWSET, AND OPENXML)

?  OUTER joins (LEFT, RIGHT, or FULL)

?  Derived table (defined by specifying a SELECT statement in the FROM clause)

?  Self-joins

?  Specifying columns by using SELECT * or SELECT table_name.*

?  DISTINCT

?  STDEV, STDEVP, VAR, VARP, or AVG

?  Common table expression (CTE)

?  float*, text, ntext, image, XML, or filestream columns

?  Subquery

?  OVER clause, which includes ranking or aggregate window functions

?  Full-text predicates (CONTAIN, FREETEXT)

?  SUM function that references a nullable expression

?  ORDER BY

?  CLR user-defined aggregate function

?  TOP

?  CUBE, ROLLUP, or GROUPING SETS operators

?  MIN, MAX

?  UNION, EXCEPT, or INTERSECT operators

?  TABLESAMPLE

?  Table variables

?  OUTER APPLY or CROSS APPLY

?  PIVOT, UNPIVOT

?  Sparse column sets

?  Inline or multi-statement table-valued functions

?  OFFSET

?  CHECKSUM_AGG

12)  索引視圖可以包含float列,但這些列不能出現在簇索引中;

13)  如果存在GROUP BY ,則視圖定義必須包含COUNT_BIG(*)且一定不要包含HAVING。這些GROUP BY限制僅用于視圖定義中。一個查詢可以在其計劃中使用索引視圖即使并不滿足這條GROUP BY限制;

14)  如果視圖定義包含一個GROUP BY子句,則唯一簇索引只能參考GROUP BY子句中確定的列。


好了,前面說了這么多限制和要求,讓人看了頭疼,不用想那么嚴重,很多技術都會寫諸多的要求和限制,可我們不還是能自由自在的使用嗎?別光說不練了,看看下面我們怎么創建和使用索引視圖吧。


USE AdventureWorks2012;  
GO  
--
為了支持索引視圖設置相關options
SET NUMERIC_ROUNDABORT OFF;  
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT,  
    QUOTED_IDENTIFIER, ANSI_NULLS ON;  
GO  
--
with schemabinding創建索引視圖
IF OBJECT_ID ('Sales.vOrders', 'view') IS NOT NULL  
DROP VIEW Sales.vOrders ;  
GO  
CREATE VIEW Sales.vOrders  
WITH SCHEMABINDING  
AS  
    SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,  
        OrderDate, ProductID, COUNT_BIG(*) AS COUNT  
    FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o  
    WHERE od.SalesOrderID = o.SalesOrderID  
    GROUP BY OrderDate, ProductID;  
GO  
--
在視圖上創建第一個唯一簇索引
CREATE UNIQUE CLUSTERED INDEX IDX_V1   
    ON Sales.vOrders (OrderDate, ProductID);  
GO  
--
該查詢能使用索引視圖即使FROM子句中并未確定該視圖
SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev,   
    OrderDate, ProductID  
FROM Sales.SalesOrderDetail AS od  
    JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID  
        AND ProductID BETWEEN 700 and 800  
        AND OrderDate >= CONVERT(datetime,'05/01/2002',101)  
GROUP BY OrderDate, ProductID  
ORDER BY Rev DESC;  
GO  
--
該查詢可以使用以上索引視圖  
SELECT  OrderDate, SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev  
FROM Sales.SalesOrderDetail AS od  
    JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID  
        AND DATEPART(mm,OrderDate)= 3  
        AND DATEPART(yy,OrderDate) = 2002  
GROUP BY OrderDate  
ORDER BY OrderDate ASC;  
GO  

 

關于“MSSQL索引視圖怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦县| 富阳市| 个旧市| 衡东县| 鄢陵县| 含山县| 莱州市| 武平县| 平谷区| 垫江县| 钟山县| 洮南市| 莒南县| 长丰县| 什邡市| 喀什市| 锡林郭勒盟| 湘潭县| 皋兰县| 明溪县| 绵竹市| 青铜峡市| 鄂托克前旗| 临夏县| 凤山市| 壶关县| 望奎县| 明水县| 阿勒泰市| 高清| 册亨县| 清新县| 平泉县| 思茅市| 茌平县| 曲沃县| 五家渠市| 晴隆县| 樟树市| 望都县| 普格县|