国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server中使用Check約束提升性能

2024-08-31 00:54:46
字體:
來源:轉載
供稿:網友
SQL Server中使用Check約束提升性能

    在SQL Server中,SQL語句的執行是依賴查詢優化器生成的執行計劃,而執行計劃的好壞直接關乎執行性能。

    在查詢優化器生成執行計劃過程中,需要參考元數據來盡可能生成高效的執行計劃,因此元數據越多,則執行計劃更可能會高效。所謂需要參考的元數據主要包括:索引、表結構、統計信息等,但還有一些不是很被注意的元數據,其中包括本文闡述的Check約束。

    查詢優化器在生成執行計劃之前有一個階段叫做代數樹優化,比如說下面這個簡單查詢:

    image

    圖1.簡單查詢

 

    查詢優化器意識到1=2這個條件是永遠不相等的,因此不需要返回任何數據,因此也就沒有必要掃描表,從圖1執行計劃可以看出僅僅掃描常量后確定了1=2永遠為false后,就可完成查詢。

 

那么Check約束呢

    Check約束可以確保一列或多列的值符合表達式的約束。在某些時候,Check約束也可以為優化器提供信息,從而優化性能,比如看圖二的例子。

image

圖2.有Check約束的列提升查詢性能

 

    圖2是一個簡單的例子,有時候在分區視圖中應用Check約束也會提升性能,測試代碼如下:

 
CREATE TABLE [dbo].[Test2007](
    [PRoductReviewID] [int] IDENTITY(1,1) NOT NULL,
    [ReviewDate] [datetime] NOT NULL
) ON [PRIMARY]
 
GO
 
ALTER TABLE [dbo].[Test2007]  WITH CHECK ADD  CONSTRAINT [CK_Test2007] CHECK  (([ReviewDate]>='2007-01-01' AND [ReviewDate]<='2007-12-31'))
GO
 
ALTER TABLE [dbo].[Test2007] CHECK CONSTRAINT [CK_Test2007]
GO
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金堂县| 佛冈县| 克拉玛依市| 津南区| 东丽区| 巴里| 东宁县| 饶河县| 营口市| 安岳县| 贵德县| 永济市| 北宁市| 潮安县| 德兴市| 从化市| 新闻| 伊金霍洛旗| 古交市| 万全县| 大荔县| 德保县| 万载县| 茌平县| 正宁县| 武穴市| 逊克县| 南部县| 和平区| 远安县| 报价| 康平县| 长海县| 射阳县| 青岛市| 桑植县| 达拉特旗| 娱乐| 肥城市| 三都| 蓬安县|