最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Sql Server中的表掃描

 更新時(shí)間:2015年02月27日 10:01:16   作者:huangxincheng  
這篇文章主要介紹了深入理解Sql Server中的表掃描,本文講解了表掃描的相關(guān)知識(shí)、表掃描的運(yùn)行原理等內(nèi)容,需要的朋友可以參考下

  很久以前我們?cè)趯憇ql的時(shí)候,最怕的一件事情就是sql莫名奇妙的超級(jí)慢,慢的是擼一管子回來(lái),那個(gè)小球還在一直轉(zhuǎn)。。。這個(gè)著急也只有當(dāng)事人才明白,后來(lái)聽說(shuō)有個(gè)什么“評(píng)估執(zhí)行計(jì)劃“,后來(lái)的后來(lái)才明白應(yīng)該避免表掃描。。。

一:表掃描

1.現(xiàn)象

  ”表掃描“聽起來(lái)很簡(jiǎn)單,不就是一行一行的掃嘛,你要說(shuō)”執(zhí)行計(jì)劃”的話,我也會(huì)玩,為了更可觀,我build一個(gè)表,再插入三行數(shù)據(jù),如下圖:

 

上面的Person我是一個(gè)索引都沒(méi)建,然后where一下,看看表掃描是啥樣的???

 

 

   果然是看到了萬(wàn)惡的“表掃描”三個(gè)字,既然是萬(wàn)惡的東西,我們一定要深刻了解下,然后我們才可以怎么去想辦法避免它。。。所以我們一定要理解到本質(zhì),那問(wèn)題來(lái)了,它到底是怎么掃的呢???怎么破呢?這個(gè)還必須得從數(shù)據(jù)頁(yè)說(shuō)起。。。

 二: 深刻理解表掃描

1:數(shù)據(jù)頁(yè)

    這個(gè)學(xué)sqlserver的沒(méi)有理由說(shuō)不知道,我們的記錄都是以數(shù)據(jù)頁(yè)形式存儲(chǔ)的,而且還應(yīng)該知道數(shù)據(jù)頁(yè)的大小是8k。。。。那數(shù)據(jù)頁(yè)在哪里?我可以

讓你眼見為實(shí)。

乍一看我畫了好多,千萬(wàn)不要怕,不要以為畫的多,就以為高深了。。。我簡(jiǎn)單的剖析下。

<1>:dbcc ind 命令

 你要是想看數(shù)據(jù)頁(yè)的相關(guān)情況,sqlserver還真提供了專用命令dbcc 滿足你,你可能會(huì)問(wèn)sqlserver中有提供ind命令的參數(shù)嗎?告訴你吧,還真有

的,不過(guò)這個(gè)要開啟2588跟蹤,就像下面這樣。

  <2>:PageFID,PagePID,IAMFID

  剛才也說(shuō)了,數(shù)據(jù)頁(yè)有很多種,默認(rèn)說(shuō)的都是表數(shù)據(jù)頁(yè),其實(shí)還有IAM數(shù)據(jù)頁(yè),沒(méi)什么稀奇的,IAM就是用來(lái)跟蹤表數(shù)據(jù)頁(yè)的,所以上面的圖中,IAMFID字段為Null的記錄就是IAM頁(yè),下面的PagePID=78的,就是表數(shù)據(jù)頁(yè)。

 2.查看數(shù)據(jù)頁(yè)

  為避免大家糊涂了,我先還是說(shuō)說(shuō)數(shù)據(jù)頁(yè)內(nèi)部結(jié)構(gòu)大概是個(gè)什么樣子,好讓大家有個(gè)整體印象。

 從圖中可以看到,在數(shù)據(jù)頁(yè)的尾部是有很多槽位的,這些槽位指向了Data區(qū)域中一條條實(shí)際記錄的地址,所以說(shuō)表掃描,其實(shí)就是掃這些Slot槽位,

還是拿上面的Person表中的三條記錄來(lái)說(shuō),他們都是保存在78號(hào)數(shù)據(jù)頁(yè)中,現(xiàn)在出于好奇心把78號(hào)數(shù)據(jù)頁(yè)導(dǎo)出來(lái),說(shuō)干就干。。。。很簡(jiǎn)單,你需

要做兩件事情:

<1>開啟3604跟蹤: dbcc traceon(3604)

<2>使用dbcc page 命令導(dǎo)出1號(hào)文件下面的78號(hào)數(shù)據(jù)頁(yè)(pageFID:pagePID)=(1:78),就像下面這樣。。。

 數(shù)據(jù)頁(yè)頭(PAGE HEADER):

 

數(shù)據(jù)內(nèi)容(Page Data): 

 

數(shù)據(jù)槽位(Page Slot):

 

 

有沒(méi)有看到上面(0,1,2)三個(gè)槽位,并且都有相應(yīng)的偏移地址(0x7e,0x92,0xba),這個(gè)地址就指向了Data區(qū)域?qū)嶋H記錄的偏移地址。

好了,到此為止吧,不能再往下說(shuō)了,洗洗睡了。

  • 巧妙利用PARTITION分組排名遞增特性解決合并連續(xù)相同數(shù)據(jù)行

    巧妙利用PARTITION分組排名遞增特性解決合并連續(xù)相同數(shù)據(jù)行

    這篇文章主要介紹了巧妙利用PARTITION分組排名遞增特性解決合并連續(xù)相同數(shù)據(jù)行,需要的朋友可以參考下
    2014-08-08
  • MSSQL 2000 使用幫助(sql server簡(jiǎn)明教程)

    MSSQL 2000 使用幫助(sql server簡(jiǎn)明教程)

    這篇文章主要介紹了MSSQL 2000 使用幫助(sql server簡(jiǎn)明教程),需要的朋友可以參考下
    2017-04-04
  • SqlServer數(shù)據(jù)庫(kù)中文亂碼問(wèn)題解決方法

    SqlServer數(shù)據(jù)庫(kù)中文亂碼問(wèn)題解決方法

    SQL版的亂碼問(wèn)題還是出現(xiàn)在SQL SERVER的安裝設(shè)置上。默認(rèn)安裝時(shí)系統(tǒng)默認(rèn)的排序規(guī)則是拉丁文的排序規(guī)則,但一般人在安裝時(shí)沒(méi)有考慮到這一點(diǎn),安裝時(shí)只是點(diǎn)取下一步,安裝完成后,造成了SQL版在使用過(guò)程中出現(xiàn)亂碼
    2020-03-03
  • 編寫高質(zhì)量代碼改善C#程序——使用泛型集合代替非泛型集合(建議20)

    編寫高質(zhì)量代碼改善C#程序——使用泛型集合代替非泛型集合(建議20)

    這篇文章主要介紹編寫高質(zhì)量的代碼有助于改善C#程序,在開發(fā)過(guò)程中集合用的比較多,如何把集合使用好,在開發(fā)過(guò)程必須掌握的技巧,下面這篇文章就給大家詳細(xì)介紹編寫高質(zhì)量代碼改善C#程序——使用泛型集合代替非泛型集合(建議20),需要的朋友可以參考下
    2015-08-08
  • sqlserver循環(huán)刪除表中的數(shù)據(jù)最好方案

    sqlserver循環(huán)刪除表中的數(shù)據(jù)最好方案

    這篇文章主要介紹了sqlserver?中?循環(huán)刪除表中的數(shù)據(jù),這樣不會(huì)鎖表,導(dǎo)致業(yè)務(wù)出現(xiàn)問(wèn)題,本文給大家分享最新解決方案,文中給大家補(bǔ)充介紹了foreach 循環(huán)中刪除一條數(shù)據(jù)_SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法,需要的朋友可以參考下
    2023-11-11
  • SQL Server查看未釋放游標(biāo)的方法

    SQL Server查看未釋放游標(biāo)的方法

    這篇文章主要介紹了SQL Server查看未釋放游標(biāo)的方法的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • SQL Server解決游標(biāo)性能問(wèn)題的替代方案

    SQL Server解決游標(biāo)性能問(wèn)題的替代方案

    游標(biāo)是一種能從包含多個(gè)元組的集合中每次讀取一個(gè)元組的機(jī)制,游標(biāo)總是和一段SELECT語(yǔ)句關(guān)聯(lián),SELECT語(yǔ)句查詢出的結(jié)果集就作為集合,游標(biāo)能每次從該集合中讀取出一個(gè)元組進(jìn)行不同操作,但在某些情況下,它們可能會(huì)導(dǎo)致性能問(wèn)題,本介紹了SQL Server解決游標(biāo)性能問(wèn)題的替代方案
    2024-12-12
  • 一個(gè)完整的SQL SERVER數(shù)據(jù)庫(kù)全文索引的示例介紹

    一個(gè)完整的SQL SERVER數(shù)據(jù)庫(kù)全文索引的示例介紹

    以下是介紹SQL SERVER數(shù)據(jù)庫(kù)全文索引的示例,以pubs數(shù)據(jù)庫(kù)為例。需要的朋友參考下
    2013-07-07
  • 最新評(píng)論

    长葛市| 琼中| 拉孜县| 扎兰屯市| 个旧市| 怀宁县| 会东县| 盱眙县| 临高县| 茌平县| 剑川县| 石林| 栾城县| 正宁县| 和林格尔县| 浙江省| 修水县| 英山县| 天长市| 霍城县| 余庆县| 淄博市| 乐清市| 长岛县| 临江市| 湘西| 武宣县| 哈巴河县| 丽江市| 赞皇县| 平凉市| 武乡县| 沂南县| 邵阳市| 马边| 长汀县| 会同县| 乐东| 屯门区| 柳林县| 栾川县|