原创 SQL Server索引進階第三篇:聚集索引

在上一篇文章中,我們已經介紹了非聚集索引相關的內容。在本篇中,我們會介紹與聚集索引相關的話題。 首先,我們綜合之前的文章,再來思考一下數據庫接收到請求之後(Select,Update,Delete,Insert),獲取數據的幾種方

原创 SQL Server索引進階第九篇:解讀執行計劃

其實說到執行計劃,相信已經不是什麼神祕的東西了,可以說已經逐漸的成爲了理解優化的基礎知識。在本系列之前的很多的文章中,提到也是用過執行計劃。所謂的執行計劃,說的通俗一點就是查詢語句的執行算法。通過查看執行計劃,可以讓我們看到很多的優化引

原创 SQL Server索引進階第七篇:過濾的索引

在之前的文章中,我們已經介紹了很多有關索引的知識,不管是對聚集索引還是非聚集索引,有一點我們可以知道就是:在底層數據表中的每一行,在索引頁中都有一個條目與之前對應,換句話說,就是,如果底層的數據有,假設10w條,那麼在索引結構中必然會包

原创 SQL Server索引進階第十五篇:索引的最佳實踐

  在本篇文章中,我們在學習了之前的知識之後,推薦14條指導方針。這14條指導方針可以幫助你更好的爲數據庫構建索引。    本篇文章的格式使用了由Addison Wesley出版社出版的<Framework Design Guidelin

原创 SQL Server索引進階第十四篇:索引統計

  在第十篇文章中我們詳述了爲什麼索引需要葉子節點和非葉子節點,我原文是”然而,SQL Server並不知道什麼是按字母表排序”,換句話說,SQL Server並不知道“Meyer, Helen”這個條目大概在索引的中間位置。    但是

原创 SQL Server索引進階第一篇:索引介紹

索引設計是數據庫設計中比較重要的一個環節,對數據庫的性能其中至關重要的作用,但是索引的設計卻又不是那麼容易的事情,性能也不是那麼輕易就獲取到的,很多的技術人員因爲不恰當的創建索引,最後使得其效果適得其反,可以說“成也索引,敗也索引”。

原创 SQL Server索引進階第十一篇:索引碎片分析與解決(上)

相關有關索引碎片的問題,大家應該是聽過不少,也許也很多的朋友已經做了與之相關的工作。那我們今天就來看看這個問題。爲了更好的說明這個問題,我們首先來普及一些背景知識。 知識普及 我們都知道,數據庫中的每一個表要麼是堆表,要麼就是包

原创 SQL Server索引進階第二篇:深入非聚集索引

本系列文章的第一篇介紹了SQL Server的索引,尤其重點介紹了非聚集索引,在我們的第一個例子中展示了使用非聚集索引從一個表中取得一行數據所帶來的潛在好處。在本篇文章中,我們繼續研究非聚集索引,本篇文章所研究的內容就要比使用非聚集索引在

原创 深入淺出分區表與分區索引之一:表分區介紹

前言 很多的技術人員總是特別青睞“分區表”,每每談及分區的時候,很多人都喜歡說這樣的話語“表中的數據已經達到了千萬級別,要搞分區…”。很多人以爲:分區就一定可以提升性能;很多人以爲:表中的記錄上千萬就必須得分區;很多人認爲:分區是

原创 SQL Server索引進階第十篇:索引的內部結構

    在前一系列文章中我們着重講述了有關索引各種比較虛的概念,比如索引可以做什麼,索引的邏輯結構,接下來是時候來講述比較實在的東西了,也就是索引的物理結構。理解索引的內部結構對於整體的理解索引是至關重要的,只有理解了索引的內部結構以及S

原创 SQL Server索引進階第四篇:頁和區

在上一篇文章中,我們比較了完全相同的查詢語句分別在存在聚集索引和非聚集索引的環境下耗費的成本.我們以“邏輯讀”作爲衡量成本的主要標準。現在就讓我們來解釋邏輯讀作爲主要衡量標準的原因以及SQL Server在讀取時究竟讀取什麼。   當你

原创 SQL Server索引進階第十一篇:索引碎片分析與解決(中)-碎片發生原理深度剖析

在上一篇文章中,我們講述瞭如何查看內部和外部的索引碎片,那麼在本篇的文章中,我們將會從內部的底層來分析這些索引碎片是如何產生的,同時也給出處理碎片相對應的解決方案和一些最佳實踐。 在這裏要說明一下,因爲原英文版本在理解上面可能會有些困

原创 SQL Server索引進階第十二篇:索引的創建,修改和刪除

    創建、修改和刪除索引是屬於索引維護部分中的內容,作爲數據庫對象,索引同樣也用CREATE, ALTER和 DROP這三個DDL語句進行操作。但不同的是,對於索引來說這幾個語句所能提供的功能要遠遠超過其名字所示,允許你創建、整理、

原创 SQL Server索引進階第五篇:索引包含列

包含列解析 所謂的包含列就是包含在非聚集索引中,並且不是索引列中的列。或者說的更通俗一點就是:把一些底層數據表的數據列包含在非聚集索引的索引頁中,而這些數據列又不是索引列,那麼這些列就是包含列。同時,這些包含列並不會對索引中的

原创 SQL Server索引進階第十三篇:Insert,Update,Delete語句

INSERT    在第十一篇關於索引碎片的文章中,我們已經介紹了插入語句帶來的影響,這裏只是做一個總結性介紹,更詳細的內容請翻回第十一篇。    無論是將數據插入堆表或是聚集索引表,表上的每一個索引都需要對應添加一個條目,當然過濾索引可