欧美黄色美女视频-日韩aaa久久蜜桃av-护士奶头又大又软又好摸-性久久久久久久久久-午夜福利92国语-456欧美成人免费视频-天天躁日日躁aaaxxⅹ-国产精品青青草-久久不见久久见免费影院-国模大尺度福利视频在线-69大东北熟妇高潮呻吟-亚洲精品一区av在线播放-91av 视频-亚洲成人免费影院-你懂的网址国产,欧美-成年女人色毛片

快消品貨源批發(fā)市場
快消品貨源分銷平臺
 
 
當前位置: 貨源批發(fā)網 » 網商學院 » 獨立商城 » SQL Server 查詢性能優(yōu)化——創(chuàng)建索引原則(一)

SQL Server 查詢性能優(yōu)化——創(chuàng)建索引原則(一)

放大字體  縮小字體 發(fā)布日期:2024-11-20 07:20:16  來源:電商聯(lián)盟  作者:樂發(fā)網  瀏覽次數:5

   索引是什么?索引是提高查詢性能的一個重要工具,索引就是把查詢語句所需要的少量數據添加到索引分頁中,這樣訪問數據時只要訪問少數索引的分頁就可以。但是索引對于提高查詢性能也不是萬能的,也不是建立越多的索引就越好。索引建少了,用WHERe子句找數據效率低,不利于查找數據。索引建多了,不利于新增、修改和刪除等操作,因為做這些操作時,SQL SERVER除了要更新數據表本身,還要連帶地立即更新所有的相關索引,而且過多的索引也會浪費硬盤空間。因此要建得恰到好處,這就需要經驗了。
一:索引的基本目的
     索引的基本目的是在大量數據中找尋少量數據。你可以想像一下,若一本書有700頁,就像數據表有700個數據頁,而索引卻有600個索引頁,你會想用索引來查詢書籍的內容嗎?
     索引字段的值重復性越低越好,假設書籍中如“的”“了”這些在文章中重復性極高的字,每頁都有一大堆,你會先翻索引頁某個位置有“的”,翻回該頁讀取了“的”之后,再索引看下一個“的”,結果是在先前同一頁的不同位置,又翻回書籍原頁查看下一個“的”。
     那么怎么理解索引是從大量數據中尋找少量數據呢?下面我們舉個例子來說明。
     如果一個數據表的記錄平均長度為400字節(jié),則100萬條記錄需要5萬個數據頁,其計算公式如下:
  1000000/(8060/400)=50000
  如果該數據表建立聚集索引,鍵值為4個字節(jié)長度,而ID的數據長度為13個字節(jié),因此索引結構每條記錄為20個字節(jié)。
  4(聚集索引鍵值)+13(ID鍵值)+3(管理信息)=20
  以ID字段所建立的索引,100%填充率,則總分頁數約為2482頁,其計算方式如下:
  1000000/(8060/20)
  即使是使用80%的填充率來計算也只有3106頁。其計算方式如下:
  1000000/((8060*0.8)/20)
  從上面可以看出如果是第一種情況,則索引頁只占到總數據頁的5%:
  2482/50000=0.04964 
  即使考慮取每頁只填充80%的索引數據,第二種情況,索引頁也只是占總數據頁的6%:
  3106/50000=0.06212 
  再說如果查詢條件中的字段建立索引,則由于索引鍵值數據都是以B-Tree有順序的擺放,所以可采用二分查找找數據。也就是2的N次方大于記錄數,就可以找到該條數據。而2的20次方大于100萬,因此最多找尋20次就可以找到該條記錄。由于比較次數少,數據結構也小,節(jié)省訪問硬盤與內在的資源,索引將大幅提升找尋數據的效率。SQL SERVER為提高訪問與查找對比的效率,用來作索引的數據域鍵值愈小愈好,也就是要讓分頁盡量存更多的鍵值記錄。
 注:
  如果未使用 UNIQUE 屬性創(chuàng)建聚集索引,數據庫引擎將向表自動添加一個 4 字節(jié)的 uniqueifier 列。必要時,數據庫引擎將向行自動添加一個 uniqueifier 值以使每個鍵唯一。此列和列值供內部使用,用戶不能查看或訪問。
二:什么是索引
  在 SQL Server 中,索引是按 B 樹結構進行組織的。如下圖。
            
  您也可以把索引理解為一種特殊的目錄。微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。下面,舉例來說明一下聚集索引和非聚集索引的區(qū)別:
  其實,新華字典的正文本身就是一個聚集索引。比如,我們要查“按”字,就會很自然地翻開字典的前幾頁,因為“按”的拼音是“an”,而按照拼音排序的新華字典是以英文字母“a”開頭并以“z”結尾的,那么“按”字就自然地排在字典的前部。如果您翻完了所有以“a”開頭的部分仍然找不到這個字,那么就說明新華字典中沒有這個字;同樣的,如果查“招”字,那也會將新華字典翻到最后部分,因為“招”的拼音是“zhao”。也就是說,新華字典的正文部分本身就是一個目錄,您不需要再去查其他目錄來找到您需要找的內容。我們把這種正文內容本身就是一種按照一定規(guī)則排列的目錄稱為“聚集索引”。
  如果您碰到一個不認識的字,不知道它的發(fā)音,這時候,您就不能按照剛才的方法找到您要查的字,而需要去根據“偏旁部首”查到您要找的字,然后根據這個字后的頁碼直接翻到某頁來找到您要找的字。但您結合“部首目錄”和“檢字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“張”字,我們可以看到在查部首之后的檢字表中“張”的頁碼是672頁,檢字表中“張”的上面是“馳”字,但頁碼卻是63 頁,“張”的下面是“弩”字,頁面是390頁。很顯然,這些字并不是真正的分別位于“張”字的上下方,現(xiàn)在您看到的連續(xù)的“馳、張、弩”三字實際上就是他們在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我們可以通過這種方式來找到您所需要的字,但它需要兩個過程,先找到目錄中的結果,然后 再翻到您所需要的頁碼。我們把這種目錄純粹是目錄,正文純粹是正文的排序方式稱為“非聚集索引”。
通過以上例子,我們可以理解到什么是“聚集索引”和“非聚集索引”。進一步引申一下。
聚集索引
  聚集索引指的是數據表本身就是索引的一部分,就是指數據表本身就是聚集索引的子葉層,整個數據表的擺放順序是按照你選定的鍵值由小到大排序,SQL SERVER  2000 之后的版本可指定數據由大到小排序。
  整個數據表按照鍵值字段由小到大排序,再搭配由鍵值字段加上指針的上層索引結構,也就是根節(jié)點和非子葉層級,形成整個聚集索引。因為數據表內實際擺放數據的方式只能遵循一種順序,所以一個數據表只能有一個聚集索引。在指定聚集索引時,數據域本身并不需要唯一,或指定為唯一的聚集索引,SQL SERVER內部會自動為重復的鍵值建立4個字節(jié)的唯一標識。
  如果你的數據表有一列常常用來排序,另一列常常用來 范圍查詢,還有一列重復性非常高,則該用哪一列來做聚集索引。正確答案是依據哪個查詢最重要,最常被用戶執(zhí)行。例如:你的老板一小時內多次執(zhí)行某個查詢當然比一個月執(zhí)行一兩次的查詢來得重要。 
  表(堆)創(chuàng)建聚集索引或刪除和重新創(chuàng)建現(xiàn)有聚集索引時,要求數據庫具有額外的可用工作區(qū)來容納數據排序結果和原始表或現(xiàn)有聚集索引數據的臨時副本。 
  當堆或聚集表具有多個分區(qū)時,每個分區(qū)都有一個堆或 B 樹結構,其中包含該指定分區(qū)的行組。例如,如果一個聚集表有 4 個分區(qū),那么將有 4 個 B 樹,每個分區(qū)一個。
  聚集索引( Clustered Index)
  ·        聚集索引的葉節(jié)點就是實際的數據頁
  ·        在數據頁中數據按照索引順序存儲
  ·        行的物理位置和行在索引中的位置是相同的
  ·        每個表只能有一個聚集索引
  ·        聚集索引的平均大小大約為表大小的 5%左右
  要使用索引來更有效地排序查詢數據,最直接的方式就是在你要排序的字段上建立聚集索引。在建立聚集索引之后,SQL SERVER會重新組織數據頁,讓其中的數據行按照聚集索引中鍵值的順序存儲。SQL SERVER不需要在硬盤上的數據一定要實際按照聚集索引排序,但在建立聚集索引時,會嘗試在邏輯上排序數據的同時,也會在物理上讓數據盡可能地排序。在索引子葉層級中的每個數據頁都有一個指針指向索引分頁的前一頁與后一頁,形成雙向鏈接串行,在內部的系統(tǒng)數據表包含了各索引子葉層第一個分頁的地址,為了保證數據在邏輯上是依照聚集索引的順序存放的,SQL SERVER 只需要由第一個分頁開始,并依照其連接串行一個接著一個依序尋找數據即可。如下圖。
         
注:聚集表是有聚集索引的表。
非聚集索引
   非聚集索引是完全獨立于數據表之外的結構,所以不會影響數據行的順序,其子葉層包含索引行。每個索引行包含非聚集鍵值、行定位符和任意包含列或非鍵列。行定位符中存入的數據有兩種類型:書簽(BOOKMARK)或聚集索引的鍵值。如果數據表上建立了聚集索引,則行定位符中存入的數據就是聚集索引的鍵值。如果數據表沒有建立聚集索引,則行定位符中存入的數據就是書簽,即指向數據表中記錄具體位置的ROWID,也就是文檔編號、分頁編號與頁內記錄編號(稱之為SOLT編號)所組合成的值。通過該ROWID 在數據表內獲取數據就稱為書簽查找 BOOKMARK LOOKUP。所以,一般通過非聚集索引查找到符合的鍵值后,還會搭配書簽查找。
  當非聚集索引從結構中找到符合的記錄時,雖然在子葉層該鍵值是由小到大排序,因此可能在一個分頁上就有全部符合查詢條件的鍵值,但因為數據表中數據行的擺放是沒有按順序的(或是說沒有按照該非聚集索引的鍵值順序擺放),所以真正符合記錄的數據是散布在文檔各處的,而SQL SERVER每次讀取數據都是以數據頁為單位,因此,找到一條記錄所在位置后,要先將存放該條記錄的分頁讀到內存中,再從該頁讀出記錄。
  因為BOOKMARK LOOKUP是進行隨機的I/O操作,當符合查詢的記錄很多時,通過非聚集索引訪問將導致數據頁讀取非常頻繁,就算兩條記錄在同一個分頁,該分頁也會被重復讀兩次,因此或符合的記錄有N條,就需要讀取數據表內的分頁N頁,雖然大部分的讀取操作都是針對內存中的高速緩存,但記錄數過多時一樣沒有效率,還不如數據表掃描,全部掃描一遍,把符合條件數據找出來。
  雖然 SQL 2005 以后的版本中已經不在提 BOOKMARK LOOKUP了(但實際上卻是換湯不換藥),我們的很多搜索都是使用如下的搜索過程:先在非聚集中找,然后再在聚集索引中找。如下圖。
         
  非聚集索引 ( Unclustered Index)  
  ·        非聚集索引的頁,不是數據,而是指向數據頁的頁。
  ·        若未指定索引類型,則默認為非聚集索引
  ·        葉節(jié)點頁的次序和表的物理存儲次序不同
  ·        每個表最多可以有 249個非聚集索引(一般認為每個表不應該超過10個索引)
  ·        在非聚集索引創(chuàng)建之前創(chuàng)建聚集索引(否則會引發(fā)索引重建)
  聚集索引與非聚集索引使用的情況:
 動作描述
使用聚集索引 
 使用非聚集索引
 外鍵列
 應
 應
 主鍵列
 應
 應
 列經常被分組排序(order by)
 應
 應
 返回某范圍內的數據
 應
 不應
 小數目的不同值
 應
 不應
 大數目的不同值
 不應
 應
 頻繁更新的列
 不應 
 應
 頻繁修改索引列
 不應
 應
 一個或極少不同值
 不應
 不應
  今天就普及一下索引的一些基本知識,明天來說明怎么選擇要創(chuàng)建索引的列,條件是什么,方法是什么。

樂發(fā)網超市批發(fā)網提供超市貨源信息,超市采購進貨渠道。超市進貨網提供成都食品批發(fā),日用百貨批發(fā)信息、微信淘寶網店超市采購信息和超市加盟信息.打造國內超市采購商與批發(fā)市場供應廠商搭建網上批發(fā)市場平臺,是全國批發(fā)市場行業(yè)中電子商務權威性網站。

本文內容整合網站:百度百科知乎淘寶平臺規(guī)則

本文來源: SQL Server 查詢性能優(yōu)化——創(chuàng)建索引原則(一)

分享與收藏:  網商學院搜索  告訴好友  關閉窗口  打印本文 本文關鍵字:
 
更多..資源下載
獨立商城圖文
獨立商城網商學院推薦
獨立商城點擊排行
 
手機版 手機掃描訪問
欧美黄色美女视频-日韩aaa久久蜜桃av-护士奶头又大又软又好摸-性久久久久久久久久-午夜福利92国语-456欧美成人免费视频-天天躁日日躁aaaxxⅹ-国产精品青青草-久久不见久久见免费影院-国模大尺度福利视频在线-69大东北熟妇高潮呻吟-亚洲精品一区av在线播放-91av 视频-亚洲成人免费影院-你懂的网址国产,欧美-成年女人色毛片
<rt id="wi224"></rt>

  • <bdo id="wi224"><source id="wi224"></source></bdo>
    <table id="wi224"><wbr id="wi224"></wbr></table>
    <li id="wi224"><dl id="wi224"></dl></li>
    午夜天堂在线视频| 国语对白做受xxxxx在线中国| 只有这里有精品| 天天操天天爽天天射| 国产情侣第一页| 欧美精品一区二区三区三州| 性一交一乱一伧国产女士spa| 日本一本中文字幕| 女女同性女同一区二区三区按摩| 日韩一区二区三区不卡视频| 极品粉嫩美女露脸啪啪| 亚洲一区二区在线视频观看| 午夜精品中文字幕| 轻点好疼好大好爽视频| 丰满女人性猛交| 成人午夜免费在线视频| 亚洲精品蜜桃久久久久久| 福利视频一二区| av视屏在线播放| 北条麻妃亚洲一区| 国产主播自拍av| 全黄性性激高免费视频| 内射国产内射夫妻免费频道| 成人中文字幕av| 国产aⅴ爽av久久久久| 午夜视频在线网站| 成人在线观看毛片| 亚洲黄色av网址| 182午夜在线观看| 男女污污视频网站| 日韩精品综合在线| www日韩视频| 先锋影音男人资源| av免费在线播放网站| 韩国一区二区在线播放| 加勒比成人在线| 欧在线一二三四区| 特级西西444| 一二三级黄色片| 日本wwwcom| 天堂在线一区二区三区| 日本手机在线视频| 91精产国品一二三产区别沈先生| 日韩视频免费播放| 亚洲综合123| 人妻丰满熟妇av无码区app| 国产美女视频免费看| 日韩欧美视频网站| 免费日韩在线观看| 天天综合网久久| 成人免费在线小视频| 欧美这里只有精品| 99九九99九九九99九他书对| 亚洲欧洲日产国码无码久久99| eeuss中文| 久热精品在线观看视频| 免费在线观看日韩视频| av免费观看国产| 国产又大又长又粗又黄| 日韩欧美中文在线视频| 久久久国产欧美| 久草福利视频在线| 97国产在线播放| 国产特级黄色大片| 91九色丨porny丨国产jk| 欧洲xxxxx| 中文字幕第50页| 午夜啪啪福利视频| 九九九九九伊人| www.午夜av| japanese在线播放| 日本丰满少妇黄大片在线观看| 亚洲一区日韩精品| 日韩高清在线一区二区| 亚洲理论中文字幕| 日本黄色播放器| www.一区二区.com| youjizz.com在线观看| 久草视频国产在线| 成人午夜精品久久久久久久蜜臀| 免费网站永久免费观看| 毛片在线视频播放| 91九色在线观看视频| 欧美日韩激情视频在线观看| 成人性生生活性生交12| 欧美大片久久久| 欧美日韩激情四射| 国产老熟妇精品观看| 日韩福利视频在线| 老司机久久精品| 免费的av在线| 欧美精品自拍视频| 亚洲 欧美 日韩系列| 美国av在线播放| 3d动漫一区二区三区| 尤物国产在线观看| 国产不卡一区二区视频| 日日噜噜夜夜狠狠| 国产一二三四区在线观看| 国产中文字幕二区| 成人综合久久网| 成人一级生活片| 香蕉视频网站入口| 97久久国产亚洲精品超碰热| 日本免费黄视频| 在线观看视频在线观看| 青青在线视频观看| 992tv成人免费观看| 天美星空大象mv在线观看视频| 成人不卡免费视频| 欧美成人精品欧美一级乱| 永久免费在线看片视频| 在线视频日韩一区| 国产精品免费入口| 亚洲免费av一区二区三区| 男人添女荫道口图片| 久久9精品区-无套内射无码| 国产又大又长又粗又黄| 男人的天堂99| 欧美久久在线观看| 久久久99精品视频| 国产精品99久久久久久大便| 香港日本韩国三级网站| 丝袜老师办公室里做好紧好爽 | 男女男精品视频站| 免费一级特黄毛片| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 亚洲精品偷拍视频| 久久这里只精品| 日本男人操女人| 久久久久人妻精品一区三寸| 午夜啪啪福利视频| 亚洲一区二区中文字幕在线观看| 干日本少妇首页| 18禁男女爽爽爽午夜网站免费 | 五月天婷婷影视| www.欧美日本| 亚洲第一中文av| 日本三级黄色网址| 美女在线视频一区二区| 国产福利影院在线观看| 亚洲国产高清av| 日韩av卡一卡二| 日韩亚洲欧美一区二区| 小泽玛利亚av在线| www插插插无码视频网站| 手机视频在线观看| 亚洲视频在线观看一区二区三区| 日韩欧美在线免费观看视频| 玩弄japan白嫩少妇hd| 国产精品亚洲αv天堂无码| 能在线观看的av网站| 国模私拍视频在线观看| 久久精品一二三四| 久草免费福利在线| 美女福利视频在线| 三级av免费观看| 黄色录像特级片| 国产尤物av一区二区三区| 国产视频在线观看网站| 免费成人在线视频网站| 性欧美1819| 久久99久久99精品| 草草草在线视频| 中文字幕一区二区三区四区五区人 | 欧美一级特黄aaa| 久久综合久久久久| 成人性视频欧美一区二区三区| 日韩精品视频网址| 日韩精品视频一区二区在线观看| 亚洲 欧美 另类人妖| 男女激情免费视频| 欧美成人三级在线播放| 久久久性生活视频| 91性高潮久久久久久久| 少妇人妻无码专区视频| 男人添女人下面免费视频| 久久精品xxx| 亚洲色图偷拍视频| 国产裸体免费无遮挡| 国产高清不卡无码视频| 鲁一鲁一鲁一鲁一av| 国产成a人亚洲精v品在线观看| 一区二区三区 欧美| 日韩日韩日韩日韩日韩| 亚洲国产欧美91| 国产天堂在线播放| 久久久久久久久久久99| 成年人网站国产| 天天爱天天做天天操| 宅男噜噜噜66国产免费观看| 国产午夜福利100集发布| 亚洲第一精品区| 极品粉嫩美女露脸啪啪| 午夜精品久久久内射近拍高清| 青青草免费在线视频观看| 免费精品99久久国产综合精品应用| 国产精品人人妻人人爽人人牛| 欧美精品自拍视频| 日本www在线视频|