(1)掌握SqlServer索引的基本概念
先了解聚集索引的基本常識
索引的定義:索引是一種用於排序的搜尋的結構
表和索引的結構
(1) 頁和區:
1. 頁是儲存資料的基本單位(8kb),也是讀寫的最小i/o單位
2. 包含資訊:表、索引資料、分配點陣圖、可用空間資訊
3.
注意:頁是sql server可以讀寫的最小i/o單位,即使只須訪問一行,sql server也要把整個頁載入到快取,再從快取中讀取資料
4. 區是由8個物理上連續的頁組成的單元
(2) 表的組織方式
1. 表2種組織方式:堆、B樹
2. 堆:不含聚集索引的表
堆儲存資料是不按任何順序進行組織
可以通過掃描IAM 頁對堆進行表掃描或序列讀操作來找到容納該堆的頁的區
3. 聚集索引
3.1索引概述:索引是按 B 樹結構進行組織的。索引 B 樹中的每一頁稱為一個索引節點。B 樹的頂端節點稱為根節點。索引中的底層節點稱為葉節點。根節點與葉節點之間的任何索引級別統稱為中間級
3.2在聚集索引中,葉節點包含基礎表的資料頁。根節點和中間級節點包含存有索引行的索引頁
3.3每個索引行包含一個鍵值和一個指標,該指標指向 B 樹上的某一中間級頁或葉級索引中的某個資料行
3.4一個分割槽 就是一個B樹結構
4. 非聚集索引
4.1非聚集索引中的每個索引行都包含非聚集鍵值和行定位符。此定位符指向聚集索引或堆中包含該鍵值的資料行。
(1)如果表是堆(意味著該表沒有聚集索引),則行定位器(row locator)是指向行的指標。該指標由檔案識別符號(file ID)、頁碼(page number)和頁上的行數(number of the row on the page)生成。整個指標稱為行 ID (RID)。
(2)如果表有聚集索引或索引檢視上有聚集索引,則行定位器是行的聚集索引鍵。如果聚集索引不是唯一的索引,SQL Server 將新增在內部生成的值(稱為唯一值)以使所有重複鍵唯一。此四位元組的值對於使用者不可見。僅當需要使聚集鍵唯一以用於非聚集索引中時,才新增該值。SQL Server 通過使用儲存在非聚集索引的葉行內的聚集索引鍵搜尋聚集索引來檢索資料行。
由請喊我大龍哥最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- SQLServer索引優化(1):對於有order by欄位的建索引策略SQLServer索引優化
- mssql sqlserver 索引專題SQLServer索引
- SQLServer索引優化(2):對於索引中include的理解SQLServer索引優化
- Sqlserver表和索引壓縮SQLServer索引
- SQLServer索引優化(3):對於建組合索引的要求SQLServer索引優化
- Ability的基本概念(1)
- sqlserver索引重建和索引重組的區別和操作方法SQLServer索引
- SQLSERVER 的主鍵索引真的是物理有序嗎?SQLServer索引
- (2) SqlServer表與索引的結構的補充SQLServer索引
- 掌握4種SQL索引型別,剖析索引原理SQL索引型別
- Sqlserver自動查詢缺失索引及拼出建立索引的語句的指令碼SQLServer索引指令碼
- 【SqlServer】管理全文索引(FULL TEXT INDEX)SQLServer索引Index
- 快速掌握mongoDB(三)——mongoDB的索引詳解MongoDB索引
- RabbitMQ(1)---基本概念MQ
- 第1節:GTID的基本概念
- SQLServer查詢哪些索引利用率低SQLServer索引
- 一文掌握GitHub Actions基本概念與配置Github
- 筆記三:基本概念-文件、索引和 REST API筆記索引RESTAPI
- 1-Vue基本概念Vue
- SQLServer的死鎖分析(1):頁鎖SQLServer
- GacUI基本概念(二)——排版(1)UI
- 移動端適配必須掌握的基本概念和適配方案
- 快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安裝和C#驅動MQC#
- 對SQLServer錯誤使用聚集索引的優化案例(千萬級資料量)SQLServer索引優化
- Python爬蟲(1.爬蟲的基本概念)Python爬蟲
- 一分鐘掌握MySQL的InnoDB引擎B+樹索引MySql索引
- 關於資料庫索引,必須掌握的知識點資料庫索引
- Apache Kylin 入門 1 - 基本概念Apache
- 1-Prometheus基本概念與部署Prometheus
- TensorFlow筆記(1)——TensorFlow中的相關基本概念筆記
- SQLSERVER學習1——資料庫概念SQLServer資料庫
- Android 事件分發(1)—— 基本概念與流程Android事件
- IO通讀JS高程系列(1)--基本概念JS
- ZooKeeper筆記(1):ZooKeeper特性與基本概念筆記
- LotusDB 設計與實現—1 基本概念
- Java-stream(1) Stream基本概念 & Stream介面Java
- 10分鐘掌握資料型別、索引、查詢的MySQL優化技巧資料型別索引MySql優化
- 【java】【多執行緒】程式、執行緒的基本概念(1)Java執行緒