自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server設(shè)定過(guò)濾條件提高索引效率

數(shù)據(jù)庫(kù) SQL Server
以下的文章主要向大家愛描述的是SQL Server設(shè)定過(guò)濾條件對(duì)索引進(jìn)行效率的提高,以下就是文章的主要內(nèi)容的描述。

主要是想大家講述的是通過(guò)SQL Server設(shè)定過(guò)濾條件來(lái)對(duì)索引進(jìn)行提高的實(shí)際操作方案,這種獨(dú)特的數(shù)據(jù)庫(kù)優(yōu)化方法也是具有自己比較雨中不同的一面,下面大家一起來(lái)學(xué)習(xí)一下。

低碳指數(shù):在這里為了方便計(jì)算和直觀,我們以Intel至強(qiáng)X7500處理器的TDP為標(biāo)準(zhǔn)計(jì)算能耗(TDP=130W/h=2.167W/m=0.036W/s)。另外根據(jù)中國(guó)林業(yè)局的數(shù)據(jù),一棵樹一天吸收二氧化碳量為5.023kg,每一度電產(chǎn)生0.785公斤二氧化碳。

如果按照本文方法優(yōu)化后數(shù)據(jù)庫(kù)執(zhí)行時(shí)間由27秒縮減到14秒,也就是單位時(shí)間少47.8%的能量消耗。那么在一天里將減少1.486kw電能消耗,約合1.167kg二氧化碳排放,按我們的計(jì)算是一天減少0.232棵樹二氧化碳吸收量。

51CTO數(shù)據(jù)庫(kù)頻道向您推薦《數(shù)據(jù)庫(kù)性能優(yōu)化與調(diào)試》和《SQL Server 2008/2005全解》專題,以便于您更好的理解本文。

SQL Server設(shè)定過(guò)濾條件提高索引效率

優(yōu)秀的索引是SQL Server數(shù)據(jù)庫(kù)性能的關(guān)鍵,然而高效的索引都是經(jīng)過(guò)精心設(shè)計(jì)而成的。眾所周知,主鍵是儲(chǔ)存數(shù)據(jù)對(duì)象的唯一標(biāo)識(shí),如果數(shù)據(jù)表中沒有聚簇索引,為了維護(hù)主鍵的唯一性,SQL Server數(shù)據(jù)庫(kù)在默認(rèn)情況下將為主鍵創(chuàng)建聚簇索引(Clustered index),除非用戶特別指定將索引創(chuàng)建為非聚簇索引(Non-clustered index)。

毫無(wú)疑問,我們應(yīng)當(dāng)為頻繁訪問的數(shù)據(jù)創(chuàng)建聚簇索引,當(dāng)然頻繁訪問的字段應(yīng)當(dāng)經(jīng)過(guò)詳細(xì)的分析和慎重選擇,并且索引值應(yīng)當(dāng)盡可能短。提到創(chuàng)建索引,大家往往首先想到主鍵,但是主鍵的數(shù)據(jù)并不一定被頻繁訪問,而且很多時(shí)候?yàn)榱吮WC主鍵的唯一性,主鍵的數(shù)值往往不是很短。

比如我們經(jīng)常會(huì)選擇全局唯一標(biāo)識(shí)符(GUID)類型作為主鍵的數(shù)據(jù)類型,唯一標(biāo)識(shí)符的長(zhǎng)度一般是16個(gè)字節(jié),就長(zhǎng)度而言,這種數(shù)據(jù)類型并不是最理想的聚簇索引選項(xiàng),在這種情況下,可以為主鍵創(chuàng)建非聚簇索引,因?yàn)橹麈I值在WHERE語(yǔ)句中用來(lái)查詢特定的記錄是非常高效的,創(chuàng)建非聚簇索引可以將查詢的效率再上一個(gè)臺(tái)階。如果您選擇了整型作為主鍵的數(shù)據(jù)類型,那就可以考慮將為主鍵生成聚簇索引。

SQL Server 2008為我們提供了另外一種索引——SQL Server設(shè)定過(guò)濾條件索引(Filtered index),一個(gè)設(shè)定過(guò)濾條件索引是一個(gè)特殊的非聚簇索引,它是某些字段的特定子集。換句話說(shuō),設(shè)定過(guò)濾條件索引是基于一部分選定的字段生成的。

比如說(shuō),在銷售業(yè)績(jī)數(shù)據(jù)表中,分公司所在城市的數(shù)據(jù)存儲(chǔ)在City字段,如果我們創(chuàng)建一個(gè)非聚簇索引,那么所有的分公司所在的城市,都會(huì)被納入索引當(dāng)中。但是如果我們使用設(shè)定過(guò)濾條件索引,我們就可以只選擇一部分城市被索引,比如北京,上海和廣州,代碼如下:

CREATE NONCLUSTERED INDEX FilteredCities ON Sales(City) WHERE City IN ('北京','上海','廣州') 與常規(guī)索引的區(qū)別在于,我們使用了WHERE語(yǔ)句來(lái)設(shè)定我們的過(guò)濾條件。假定公司的絕大部分收入都是來(lái)自于這三個(gè)城市的,那么我們的數(shù)據(jù)庫(kù)查詢會(huì)經(jīng)常訪問到在這三個(gè)城市產(chǎn)生的銷售記錄,在這種情況下,設(shè)定過(guò)濾條件索引會(huì)占據(jù)較少的磁盤空間,因?yàn)橹挥蠧ity字段的數(shù)值是北京,上海和廣州的記錄會(huì)被索引,這些記錄只是整個(gè)銷售數(shù)據(jù)表格中的一部分。

利用設(shè)定過(guò)濾條件索引可以提升數(shù)據(jù)庫(kù)的性能,首先,只有被索引到記錄發(fā)生變化的時(shí)候,才需要重建索引。比如,某一條在北京發(fā)生的銷售記錄需要調(diào)整,在更新操作之后,索引也要隨之更新,這跟其他的索引是一樣的。

但如果發(fā)生在西安的銷售記錄發(fā)生了變化,無(wú)論添加或刪除了多少條記錄,我們之前建立的設(shè)定過(guò)濾條件索引都是不需要任何操作的,因?yàn)橹挥形挥诒本⑸虾:蛷V州分公司的銷售記錄有影響到這個(gè)索引。SQL Server設(shè)定過(guò)濾條件索引的另外一個(gè)優(yōu)勢(shì)是可以減少磁盤讀寫操作,比如我們要查詢所有北京分公司的銷售記錄,那么使用剛才建立的設(shè)定過(guò)濾條件索引比常規(guī)的非聚簇索引要減少很多不必要的磁盤操作。

為了驗(yàn)證SQL Server設(shè)定過(guò)濾條件索引所帶來(lái)的性能優(yōu)勢(shì),我們進(jìn)行了對(duì)比測(cè)試。

首先,我們?cè)赩irtualBox虛擬機(jī)里安裝Windows Server 2008 R2與SQL Server 2008 R2中文版,順便說(shuō)一下,我們安裝的都是可以試用180天的試用版,在微軟官方網(wǎng)站可以直接下載,而且現(xiàn)在試用版也不需要申請(qǐng)序列號(hào)了,在安裝過(guò)程中可以直接選擇安裝180天試用,就可以直接安裝,這位實(shí)驗(yàn)和學(xué)習(xí)帶來(lái)了不少便利。

我們?cè)跀?shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)500萬(wàn)條記錄的銷售數(shù)據(jù)表,當(dāng)然,銷售金額都是隨機(jī)產(chǎn)生的,而city字段,我們隨機(jī)產(chǎn)生1到9這9個(gè)不同的數(shù)字,然后再根據(jù)需要將它們?cè)谔鎿Q為不同的城市,在這個(gè)實(shí)驗(yàn)中,我們把北京、上海和廣州的銷售記錄總比例設(shè)定為67%。

【編輯推薦】

  1. SQL Server刪除重復(fù)數(shù)據(jù)的方案有哪些?
  2. 對(duì)SQL Server 2005刪除用戶失敗的破解
  3. SQL Server還原數(shù)據(jù)庫(kù)操作步驟的詳細(xì)解析
  4. 轉(zhuǎn)移SQL Server數(shù)據(jù)的實(shí)現(xiàn)
  5. SQL Server數(shù)據(jù)庫(kù)的收縮與設(shè)定每日自動(dòng)備份
責(zé)任編輯:佚名 來(lái)源: 清華大學(xué)出版社
相關(guān)推薦

2010-05-26 08:47:00

索引SQL Server

2010-06-30 13:49:02

SQL Server數(shù)

2010-07-07 10:02:46

SQL Server數(shù)

2010-11-12 11:25:44

SQL SERVER視

2010-07-15 15:42:38

2011-04-02 13:37:05

SQL Server 索引視圖

2011-04-01 15:36:24

索引SQL Server

2010-10-25 10:55:11

Oracle函數(shù)索引

2011-07-27 17:22:10

mysql極限測(cè)試索引

2011-08-10 15:11:23

SQL Server整理索引碎片重建索引

2010-07-26 09:34:24

SQL Server性

2011-03-21 15:51:27

SQL執(zhí)行效率

2010-07-20 13:20:26

SQL Server聚

2010-06-10 13:54:10

MySQL全文搜索

2010-09-16 13:42:55

SQL SERVER索

2010-09-09 16:51:50

2010-04-07 17:45:22

Oracle位圖索引

2021-01-14 05:13:34

倒排索引搜索

2010-07-07 10:54:22

SQL Server索

2010-04-13 15:14:31

Oracle優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)