<progress id="33vd1"><meter id="33vd1"><meter id="33vd1"></meter></meter></progress>
    <th id="33vd1"></th>

    <noframes id="33vd1">

      <progress id="33vd1"><meter id="33vd1"></meter></progress>

      <th id="33vd1"><meter id="33vd1"><video id="33vd1"></video></meter></th>

      <noframes id="33vd1">

      SQL server基礎視頻教程

      • 名稱:SQL server基礎視
      • 分類:數據庫  
      • 觀看人數:加載中
      • 時間:2022/4/4 16:57:10

      一、SQL Server開發必備課程介紹

      1.1、SQL Server開發必備課程介紹在日常生活中,我們經常需要使用數據庫來處理許多事情,許多管理系統都是建立在數據庫的基礎上的,數據庫作為我們日常工作中必備可少的一門技能,開發人員必須掌握這門核心技能才能算優秀 。本課程是收錄阿笨在工作中的一些總結的關于SQL SERVER的實戰開發技能知識, 所以課程知識點有點“凌亂”,希望能夠實際的幫助到大家。

      身為一名C#高級開發人員,這些數據庫合知識不掌握不合適!

      福利:本次課程會不斷的補充新的知識點,到時候也會給大家進行分享。關于如何快速的提升SQL SERVER技能,阿笨總結了一下:多想,多看,多練。只有這樣理論+實戰才能做到熟練生巧,得心應手的地步。

      本次分享課程適合人群和學習方式:

      1)、必須具備一定的SQL SERVER基礎知識(新手慎入)。

      2)、必須做到一看,二思,三練習。

      廢話不多說,直接上干貨。我們不生產干貨,我們只是干貨的搬運工。

      二、課程包含知識點如下

      SQL Server數據庫開發必備技能實戰(第一章)

      1、你必須了解SQL Server查詢語句執行順序

      2、SQL Server批量(整體)更新兩個關聯表數據的方法

      3、SQL Server批量(部分)更新兩個關聯表數據的方法

      4、SQL Server表變量和表類型

      5、SQL Server XML類型變量

      6、SQL SERVER存儲過程批量導入和更新數據(數據同步)

      SQL Server數據庫開發必備技能實戰(第二章)

      2.1、一圖搞懂SQL Server中的各種關聯

      2.2、SQL Server臨時表

      2.3、SQL Server中Merge子句

      2.4、SQL Server中OUTPUT子句

      2.5、SQL Server中CTE表達式

      2.6、SQL Server CONCAT和FORMAT函數

      2.7、SQL Server時間戳timestamp

      時間戳timestamp實際應用場景介紹:

      1、防止數據出現并發修改問題。

      2、timestamp實現獲取增量(新增和修改)數據同步。

      2.8、SQL Server中STUFF函數

      2.9、SQL Server中group_concat合并數據為一行

      一、理解索引的結構

        索引在數據庫中的作用類似于目錄在書籍中的作用,用來提高查找信息的速度。使用索引查找數據,無需對整表進行掃描,可以快速找到所需數據。微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。

        SQL Server 中數據存儲的基本單位是頁(Page)。數據庫中的數據文件(.mdf 或 .ndf)分配的磁盤空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁盤 I/O 操作在頁級執行。也就是說,SQL Server 每次讀取或寫入數據的最少數據單位是數據頁。

        下面我們先簡單的了解一下索引的體系結構:

        1. 聚集索引結構

        在 SQL Server 中,索引是按 B 樹結構進行組織的。

        聚集索引單個分區中的結構:

      --建立UserAddDate聚集索引 Create CLUSTERED INDEX [IX_AddDate] ON [User] ( [AddDate] ASC )   

        聚集索引(Clustered Index)特點

      聚集索引的葉節點就是實際的數據頁

      聚集索引中的排序順序僅僅表示數據頁鏈在邏輯上是有序的。而不是按照順序物理的存儲在磁盤上

      行的物理位置和行在索引中的位置是相同的

      每個表只能有一個聚集索引

      聚集索引的平均大小大約為表大小的5%左右

        2. 非聚集索引結構

        非聚集索引與聚集索引具有相同的 B 樹結構,它們之間的顯著差別在于以下兩點:

        1. 基礎表的數據行不按非聚集鍵的順序排序和存儲。

        2. 非聚集索引的葉層是由索引頁而不是由數據頁組成。

        下圖示意了單個分區中的非聚集索引結構:

        包含列的索引

        通過將包含列(稱為非鍵列)添加到索引的葉級,可以擴展非聚集索引的功能。鍵列存儲在非聚集索引的所有級別,而非鍵列僅存儲在葉級別。

        下面舉個簡單的例子來說明一下聚集索引和非聚集索引的區別:

        我們有一本漢語字典,可以把它的正文本身看做是一個聚集索引,它是按照漢字拼音的開頭字母排序的,不再需要查找其他目錄。當遇到不認識的字時,需要結合“部首目錄”和“檢字表”, 先找到目錄中的結果,然后再翻到您所需要的頁碼。通過這種方法查到的目錄中字的排序并不是真正的正文的排序方法。把這種看做是一個非聚集索引。

        另外,請注意每個表只能有一個聚集索引。

      --建立UserAddDate非聚集索引 Create NONCLUSTERED INDEX [IX_AddDate] ON [User] ( [AddDate] ASC )   

        非聚集索引 (Unclustered Index) 特點

      非聚集索引的頁,不是數據,而是指向數據頁的頁。

      若未指定索引類型,則默認為非聚集索引。

      葉節點頁的次序和表的物理存儲次序不同

      每個表最多可以有249個非聚集索引

      在非聚集索引創建之前創建聚集索引(否則會引發索引重建)

        二、選擇建立哪種索引

        1. 何時創建聚集索引更能提高性能

        Clustered Index會提高大多數table的性能,尤其是當它滿足以下條件時:

        獨特, 狹窄, 持續增長的,最好是只向上增加。例如:

      Identity

      Date, identity

      GUID (only when using newsequentialid() function)  

        2. 非聚集索引提高性能的方法

        非聚集索引由于B樹的節點不是具體數據頁,有時候由于這個原因,會導致非聚集索引甚至不如表遍歷來的快。但是,非聚集索引有個特性,如果你要查詢的內容,在非聚集索引中以及被覆蓋到了,則不需要繼續到聚集索引,或者RID(heap結構中的行標識符)中去尋找數據了,這時候就可以很大的提高性能,這就是覆蓋面(Covering) 的問題。

        由于聚集索引葉子節點就是具體數據,所以聚集索引的覆蓋率是100%, 通過提高覆蓋面來提高性能的問題也就只有非聚集索引(Nonclustered Indexes)才存在。

        當查詢中所有的columns都包括在index上時,我們說這 index covers the query. Columns的順序在此不重要(Select 時候的順序不重要,但是Index 建立的順序可得小心了)。

        在 SQL Server 2005 中,為了提高這種 Covering 帶來的好處,甚至可以通過將非鍵列添加到非聚集索引的葉級別來擴展非聚集索引的功能。

        補充:只有查詢在具有高度選擇性的情況下,非聚集索引才有優勢。

        三、使用聚集索引或非聚集索引的場景 (注:優先級依次為推薦,應,不應)

        四、主鍵和聚集索引的比較

        以下是一些大眾點評網中測試使用的示例:

      CHECKPOINT 

      DBCC DropCLEANBUFFERS 

      SET STATISTICS IO ON 

      declare @d datetime 

      set @d=getdate() 

      Select * FROM User Where AddDate>'2008-06-01' AND AddDate<'2008-06-10' 

      select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate()) 

      --(45077 行受影響) 

      --表'User'。掃描計數1,邏輯讀取1103 次,物理讀取2 次,預讀1090 次,lob 邏輯讀取0 次,

      lob 物理讀取0 次,lob 預讀0 次。 

      --2543 

      CHECKPOINT 

      DBCC DropCLEANBUFFERS 

      SET STATISTICS IO ON 

      declare @d datetime 

      set @d=getdate() 

      Select * FROM User WITH (INDEX=IX_AddDate) Where AddDate>'2008-06-01' AND AddDate<'2008-06-10' 

      select [語句執行花費時間(毫秒)]=datediff(ms,@d,getdate()) 

      --(45077 行受影響) 

      --表'User'。掃描計數1,邏輯讀取45165 次,物理讀取133 次,預讀141 次,lob 邏輯讀取0 次,

      lob 物理讀取0 次,lob 預讀0 次。 

      --3860 

        五、使用索引的代價

      索引需要占用數據表以外的物理存儲空間

      創建索引和維護索引要花費一定的時間

      當對表進行更新操作時,索引需要被重建,這樣降低了數據的維護速度。

      A级毛片久久久久久精品
        <progress id="33vd1"><meter id="33vd1"><meter id="33vd1"></meter></meter></progress>
        <th id="33vd1"></th>

        <noframes id="33vd1">

          <progress id="33vd1"><meter id="33vd1"></meter></progress>

          <th id="33vd1"><meter id="33vd1"><video id="33vd1"></video></meter></th>

          <noframes id="33vd1">