自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Sever索引之聚簇索引和非聚簇索引

數(shù)據(jù)庫(kù) SQL Server
以下的文章主要是闡述SQL Sever索引,以下就是正文的詳細(xì)內(nèi)容的介紹,望你瀏覽完以下的內(nèi)容會(huì)有所收獲。

我們今天是要和大家一起討論的是SQL Sever索引,我們大家都知道表的索引和字典中的索引相似度也別大。它可以極大地提高查詢的速度。對(duì)一個(gè)較大的表來說,通過加索引,一個(gè)通常要花費(fèi)幾個(gè)小時(shí)來完成的查詢只要幾分鐘就可以完成。

(對(duì)于包含索引的數(shù)據(jù)庫(kù),SQL Sever需要一個(gè)可觀的額外空間。例如,要建立一個(gè)聚簇SQL Sever索引,需要大約1.2倍于數(shù)據(jù)大小的空間。速度是需要付出代價(jià)的。)

 

聚簇索引和非聚簇索引

假設(shè)你已經(jīng)通過字典的索引找到了一個(gè)字所在的頁碼。一旦已經(jīng)知道了頁碼后,你很可能隨機(jī)的翻尋字典,直至找到正確的頁碼。這里還有一種找到頁碼的更有效的方法。

首先,把字典翻到大概一半的地方,如果要找的頁碼比半本字典處的頁碼小,就翻到四分之一處,否則,就把書翻到四分之三的地方。通過這種方法,你可以繼續(xù)把字典分成更小的部分,直至找到正確的頁碼附近。這是找到書頁的非常有效的一種方法。

(呵呵,到處都是這個(gè)例子,跟Hello world有一拼)SQL Sever的表索引以類似的方式工作。一個(gè)表SQL Sever索引由一組頁組成,這些頁構(gòu)成了一個(gè)樹形結(jié)構(gòu)。根頁通過指向另外兩個(gè)頁,把一個(gè)表的記錄從邏輯上分成和兩個(gè)部分。而根頁所指向的兩個(gè)頁又分別把記錄分割成更小的部分。每個(gè)頁都把記錄分成更小的分割,直至到達(dá)葉級(jí)頁。

 

索引有兩種類型:聚簇索引和非聚簇索引

在聚簇索引中,索引樹的葉級(jí)頁包含實(shí)際的數(shù)據(jù):記錄的索引順序與物理順序相同。

在非聚簇索引中,葉級(jí)頁指向表中的記錄:記錄的物理順序與邏輯順序沒有必然的聯(lián)系。

 

聚簇索引非常象目錄表,目錄表的順序與實(shí)際的頁碼順序是一致的。非聚簇索引則更象書的標(biāo)準(zhǔn)SQL Sever索引表,索引表中的順序通常與實(shí)際的頁碼順序是不一致的。一本書也許有多個(gè)索引。例如,它也許同時(shí)有主題索引和作者索引。同樣,一個(gè)表可以有多個(gè)非聚簇索引。

通常情況下,你使用的是聚簇索引,但是你應(yīng)該對(duì)兩種類型索引的優(yōu)缺點(diǎn)都有所理解。

每個(gè)表只能有一個(gè)聚簇索引,因?yàn)橐粋€(gè)表中的記錄只能以一種物理順序存放。通常你要對(duì)一個(gè)表按照標(biāo)識(shí)字段建立聚簇索引。但是,你也可以對(duì)其它類型的字段建立聚簇索引,如字符型,數(shù)值型和日期時(shí)間型字段。

從建立了聚簇索引的表中取出數(shù)據(jù)要比建立了非聚簇索引的表快。當(dāng)你需要取出一定范圍內(nèi)的數(shù)據(jù)時(shí),用聚簇索引也比用非聚簇索引好。例如,假設(shè)你用一個(gè)表來記錄訪問者在你網(wǎng)點(diǎn)上的活動(dòng)。如果你想取出在一定時(shí)間段內(nèi)的登錄信息,你應(yīng)該對(duì)這個(gè)表的DATETIME型字段建立聚簇索引。

 

對(duì)聚簇索引的主要限制是每個(gè)表只能建立一個(gè)聚簇索引。但是,一個(gè)表可以有不止一個(gè)非聚簇SQL Sever索引。實(shí)際上,對(duì)每個(gè)表你最多可以建立249個(gè)非聚簇索引。你也可以對(duì)一個(gè)表同時(shí)建立聚簇索引和非聚簇索引。

 

假如你不僅想根據(jù)日期,而且想根據(jù)用戶名從你的網(wǎng)點(diǎn)活動(dòng)日志中取數(shù)據(jù)。在這種情況下,同時(shí)建立一個(gè)聚簇索引和非聚簇索引是有效的。你可以對(duì)日期時(shí)間字段建立聚簇索引,對(duì)用戶名字段建立非聚簇索引。如果你發(fā)現(xiàn)你需要更多的索引方式,你可以增加更多的非聚簇索引。

 

非聚簇索引需要大量的硬盤空間和內(nèi)存。另外,雖然非聚簇索引可以提高從表中 取數(shù)據(jù)的速度,它也會(huì)降低向表中插入和更新數(shù)據(jù)的速度。每當(dāng)你改變了一個(gè)建立了非聚簇索引的表中的數(shù)據(jù)時(shí),必須同時(shí)更新索引。

因此你對(duì)一個(gè)表建立非聚簇索引時(shí)要慎重考慮。如果你預(yù)計(jì)一個(gè)表需要頻繁地更新數(shù)據(jù),那么不要對(duì)它建立太多非聚簇索引。另外,如果硬盤和內(nèi)存空間有限,也應(yīng)該限制使用非聚簇索引的數(shù)量。

 

索引屬性

這兩種類型的索引都有兩個(gè)重要屬性:

你可以用兩者中任一種類型同時(shí)對(duì)多個(gè)字段建立索引(復(fù)合SQL Sever索引);

 

兩種類型的索引都可以指定為唯一索引。

 

你可以對(duì)多個(gè)字段建

 

【編輯推薦】

  1. SQL Server行轉(zhuǎn)列的什么情況下被用?
  2. SQL Server獲取表的容量很簡(jiǎn)單!
  3. SQL Server排序遇到NULL,不怕不帕!
  4. SQL Server 2005兩種快照隔離機(jī)制的不同之處
  5. SQL Server 2008 FileStream支持“真功夫版”

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-09-27 11:24:37

SQL聚簇索引

2025-02-28 10:31:50

2024-05-24 09:28:22

2023-06-12 08:38:23

聚簇索引排序非聚簇索引

2025-04-28 07:10:46

聚簇非聚簇索引

2022-06-13 07:36:06

MySQLInnoDB索引

2023-04-17 10:47:49

MySQL聚簇索引

2010-04-21 13:43:31

Oracle聚簇索引

2010-04-12 16:50:47

Oracle索引聚簇表

2010-05-31 13:57:49

2010-04-12 17:00:37

Oracle索引聚簇表

2022-03-25 10:38:40

索引MySQL數(shù)據(jù)庫(kù)

2023-06-05 08:07:34

聚集索引存儲(chǔ)數(shù)據(jù)

2010-04-01 17:14:04

Oracle索引

2023-05-23 22:19:04

索引MySQL優(yōu)化

2020-02-14 18:10:40

MySQL索引數(shù)據(jù)庫(kù)

2024-03-25 13:02:00

MySQL索引主鍵

2023-04-26 07:40:34

MySQL索引類型存儲(chǔ)

2021-07-02 09:45:29

MySQL InnoDB數(shù)據(jù)

2022-05-26 07:31:42

索引SQL后端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)