日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應(yīng)用 > 數(shù)據(jù)庫索引

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

來源:程序員人生   發(fā)布時(shí)間:2015-02-07 08:20:53 閱讀次數(shù):3274次

1、索引是甚么

索引是與表或視圖關(guān)聯(lián)的磁盤上結(jié)構(gòu),可以加快從表或視圖中檢索行的速度。索引包括由表或視圖中的1列或多列生成的鍵。這些鍵存儲(chǔ)在1個(gè)結(jié)構(gòu)(B 樹)中,使 SQL Server 可以快速有效地查找與鍵值關(guān)聯(lián)的行。

> 1.1表或視圖可以包括以下類型的索引:
  • 聚集 o 聚集索引根據(jù)數(shù)據(jù)行的鍵值在表或視圖中排序和存儲(chǔ)這些數(shù)據(jù)行。索引定義中包括聚集索引列。每一個(gè)表只能有1個(gè)聚集索引,由于數(shù)據(jù)行本身只能按1個(gè)順序排序。 o 只有當(dāng)表包括聚集索引時(shí),表中的數(shù)據(jù)行才按排序順序存儲(chǔ)。如果表具有聚集索引,則該表稱為聚集表。如果表沒有聚集索引,則其數(shù)據(jù)行存儲(chǔ)在1個(gè)稱為堆的無序結(jié)構(gòu)中。
  • 非聚集 o 非聚集索引具有獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引包括非聚集索引鍵值,并且每一個(gè)鍵值項(xiàng)都有指向包括該鍵值的數(shù)據(jù)行的指針。 o 從非聚集索引中的索引行指向數(shù)據(jù)行的指針稱為行定位器。行定位器的結(jié)構(gòu)取決于數(shù)據(jù)頁是存儲(chǔ)在堆中還是聚集表中。對(duì)堆,行定位器是指向行的指針。對(duì)聚集表,行定位器是聚集索引鍵。 o 您可以向非聚集索引的葉級(jí)添加非鍵列以跳過現(xiàn)有的索引鍵限制(900 字節(jié)和 16 鍵列),并履行完全范圍內(nèi)的索引查詢。

聚集索引和非聚集索引都可以是唯1的。這意味著任何兩行都不能有相同的索引鍵值。另外,索引也能夠不是唯1的,即多行可以同享同1鍵值。

每當(dāng)修改了表數(shù)據(jù)后,都會(huì)自動(dòng)保護(hù)表或視圖的索引。

> 1.2索引和束縛

對(duì)表列定義了 PRIMARY KEY 束縛和 UNIQUE 束縛時(shí),會(huì)自動(dòng)創(chuàng)建索引。例如,如果創(chuàng)建了表并將1個(gè)特定列標(biāo)識(shí)為主鍵,則 數(shù)據(jù)庫引擎自動(dòng)對(duì)該列創(chuàng)建 PRIMARY KEY 束縛和索引。有關(guān)詳細(xì)信息,請(qǐng)參閱創(chuàng)建索引(數(shù)據(jù)庫引擎)。

2、索引有甚么用

  • 與書中的索引1樣,數(shù)據(jù)庫中的索引使您可以快速找到表或索引視圖中的特定信息。索引包括從表或視圖中1個(gè)或多個(gè)列生成的鍵,和映照到指定數(shù)據(jù)的存儲(chǔ)位置的指針。通過創(chuàng)建設(shè)計(jì)良好的索引以支持查詢,可以顯著提高數(shù)據(jù)庫查詢和利用程序的性能。索引可以減少為返回查詢結(jié)果集而必須讀取的數(shù)據(jù)量。索引還可以強(qiáng)迫表中的行具有唯1性,從而確保表數(shù)據(jù)的數(shù)據(jù)完全性。

  • 設(shè)計(jì)良好的索引可以減少磁盤 I/O 操作,并且消耗的系統(tǒng)資源也較少,從而可以提高查詢性能。對(duì)包括 SELECT、UPDATE、DELETE 或 MERGE 語句的各種查詢,索引會(huì)很有用。例如,在 AdventureWorks 數(shù)據(jù)庫中履行的查詢 SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250。履行此查詢時(shí),查詢優(yōu)化器評(píng)估可用于檢索數(shù)據(jù)的每一個(gè)方法,然后選擇最有效的方法。可能采取的方法包括掃描表和掃描1個(gè)或多個(gè)索引(如果有)。

  • 掃描表時(shí),查詢優(yōu)化器讀取表中的所有行,并提取滿足查詢條件的行。掃描表會(huì)有許多磁盤 I/O 操作,并占用大量資源。但是,如果查詢的結(jié)果集是占表中較高百分比的行,掃描表會(huì)是最為有效的方法。

  • 查詢優(yōu)化器使用索引時(shí),搜索索引鍵列,查找到查詢所需行的存儲(chǔ)位置,然后從該位置提取匹配行。通常,搜索索引比搜索表要快很多,由于索引與表不同,1般每行包括的列非常少,且行遵守排序順序。

  • 查詢優(yōu)化器在履行查詢時(shí)通常會(huì)選擇最有效的方法。但如果沒有索引,則查詢優(yōu)化器必須掃描表。您的任務(wù)是設(shè)計(jì)并創(chuàng)建最合適您的環(huán)境的索引,以便查詢優(yōu)化器可以從多個(gè)有效的索引當(dāng)選擇。SQL Server 提供的數(shù)據(jù)庫引擎優(yōu)化顧問可以幫助分析數(shù)據(jù)庫環(huán)境并選擇適當(dāng)?shù)乃饕?/p>

3、索引的優(yōu)勢(shì)

第1,通過創(chuàng)建唯1性索引,可以保證數(shù)據(jù)庫表中每行數(shù)據(jù)的唯1性。 第2,可以大大加快 數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的緣由。 第3,可以加速表和表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完全性方面特別成心義。 第4,在使用分組和排序 子句進(jìn)行數(shù)據(jù)檢索時(shí),一樣可以顯著減少查詢中分組和排序的時(shí)間。 第5,通過使用索引,可以在查詢的進(jìn)程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。

4、索引既然這么有優(yōu)勢(shì),為何不每列都創(chuàng)建

第1,創(chuàng)建索引和保護(hù)索引要耗費(fèi)時(shí)間,這類時(shí)間隨著數(shù)據(jù) 量的增加而增加。 第2,索引需要占物理空間,除數(shù)據(jù)表占數(shù)據(jù)空間以外,每個(gè)索引還要占1定的物理空間,如果要建立聚簇索引,那末需要的空間就會(huì)更大。 第3,當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)的保護(hù),這樣就下降了數(shù)據(jù)的保護(hù)速度。

5、 創(chuàng)建索引的1些策略

  • 在常常需要搜索的列上,可以加快搜索的速度;
  • 在作為主鍵的列上,強(qiáng)迫該列的唯1性和組織表中數(shù)據(jù)的排列結(jié)構(gòu);
  • 在常常用在連接的列上,這 些列主要是1些外鍵,可以加快連接的速度;
  • 在常常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,由于索引已排序,其指定的范圍是連續(xù)的;
  • 在常常需要排序的列上創(chuàng) 建索引,由于索引已排序,這樣查詢可以利用索引的排序,加快排序查詢時(shí)間;
  • 在常常使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度。

一樣,對(duì)有些列不應(yīng)當(dāng)創(chuàng)建索引。

  • 第1,對(duì)那些在查詢中很少使用或參考的列不應(yīng)當(dāng)創(chuàng)建索引。這是因 為,既然這些列很少使用到,因此有索引或無索引,其實(shí)不能提高查詢速度。相反,由于增加了索引,反而下降了系統(tǒng)的保護(hù)速度和增大了空間需求。
  • 第2,對(duì)那 些只有很少數(shù)據(jù)值的列也不應(yīng)當(dāng)增加索引。這是由于,由于這些列的取值很少,例如人事表的性別列,在查詢的結(jié)果中,結(jié)果集的數(shù)據(jù)行占了表中數(shù)據(jù)行的很大比 例,即需要在表中搜索的數(shù)據(jù)行的比例很大。增加索引,其實(shí)不能明顯加快檢索速度。
  • 第3,對(duì)那些定義為text, image和bit數(shù)據(jù)類型的列不應(yīng)當(dāng)增加索引。這是由于,這些列的數(shù)據(jù)量要末相當(dāng)大,要末取值很少。
  • 第4,當(dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢索性能時(shí),不應(yīng)當(dāng)創(chuàng)建索 引。這是由于,修改性能和檢索性能是相互矛盾的。當(dāng)增加索引時(shí),會(huì)提高檢索性能,但是會(huì)下降修改性能。當(dāng)減少索引時(shí),會(huì)提高修改性能,下降檢索性能。因 此,當(dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢索性能時(shí),不應(yīng)當(dāng)創(chuàng)建索引。

6、創(chuàng)建索引的方法

創(chuàng)建索引有多種方法,這些方法包括直接創(chuàng)建索引的方法和間接創(chuàng)建索引的方法。
  • 直接創(chuàng)建索引,例如使用CREATE INDEX語句或使用創(chuàng)建索引向?qū)?/li>
  • 間接創(chuàng)建索引,例如在表中定義主鍵束縛或唯1性鍵束縛時(shí),同時(shí)也創(chuàng)建了索引。

    雖然,這兩種方法都可以創(chuàng)建索引,但 是,它們創(chuàng)建索引的具體內(nèi)容是有區(qū)分的。

    使用CREATE INDEX語句或使用創(chuàng)建索引向?qū)韯?chuàng)建索引,這是最基本的索引創(chuàng)建方式,并且這類方法最具有柔性,可以定制創(chuàng)建出符合自己需要的索引。在使用這類方式 創(chuàng)建索引時(shí),可使用許多選項(xiàng),例如指定數(shù)據(jù)頁的充滿度、進(jìn)行排序、整理統(tǒng)計(jì)信息等,這樣可以優(yōu)化索引。使用這類方法,可以指定索引的類型、唯1性和復(fù)合 性,也就是說,既可以創(chuàng)建聚簇索引,也能夠創(chuàng)建非聚簇索引,既可以在1個(gè)列上創(chuàng)建索引,也能夠在兩個(gè)或兩個(gè)以上的列上創(chuàng)建索引。 通過定義主鍵束縛或唯1性鍵束縛,也能夠間接創(chuàng)建索引。主鍵束縛是1種保持?jǐn)?shù)據(jù)完全性的邏輯,它限制表中的記錄有相同的主鍵記錄。在創(chuàng)建主鍵束縛時(shí),系 統(tǒng)自動(dòng)創(chuàng)建了1個(gè)唯1性的聚簇索引。雖然,在邏輯上,主鍵束縛是1種重要的結(jié)構(gòu),但是,在物理結(jié)構(gòu)上,與主鍵束縛相對(duì)應(yīng)的結(jié)構(gòu)是唯1性的聚簇索引。換句話 說,在物理實(shí)現(xiàn)上,不存在主鍵束縛,而只存在唯1性的聚簇索引。一樣,在創(chuàng)建唯1性鍵束縛時(shí),也同時(shí)創(chuàng)建了索引,這類索引則是唯1性的非聚簇索引。因此, 當(dāng)使用束縛創(chuàng)建索引時(shí),索引的類型和特點(diǎn)基本上都已肯定了,由用戶定制的余地比較小。

當(dāng)在表上定義主鍵或唯1性鍵束縛時(shí),如果表中已有了使用CREATE INDEX語句創(chuàng)建的標(biāo)準(zhǔn)索引時(shí),那末主鍵束縛或唯1性鍵束縛創(chuàng)建的索引覆蓋之前創(chuàng)建的標(biāo)準(zhǔn)索引。也就是說,主鍵束縛或唯1性鍵束縛創(chuàng)建的索引的優(yōu)先 級(jí)高于使用CREATE INDEX語句創(chuàng)建的索引。

7、索引的特點(diǎn)

索引有兩個(gè)特點(diǎn),即唯1性索引和復(fù)合索引。
  • 唯1性索引保證在索引列中的全部數(shù)據(jù)是唯1的,不會(huì)包括冗余數(shù)據(jù)。如果表中已有1個(gè)主鍵束縛或唯1性鍵束縛,那末當(dāng)創(chuàng)建表或修改表時(shí),SQL Server自動(dòng)創(chuàng)建1個(gè)唯1性索引。但是,如果必須保證唯1性,那末應(yīng)當(dāng)創(chuàng)建主鍵束縛或唯1性鍵束縛,而不是創(chuàng)建1個(gè)唯1性索引。當(dāng)創(chuàng)建唯1性索引 時(shí),應(yīng)當(dāng)認(rèn)真斟酌這些規(guī)則:當(dāng)在表中創(chuàng)建主鍵束縛或唯1性鍵束縛時(shí),SQL Server自動(dòng)創(chuàng)建1個(gè)唯1性索引;如果表中已包括有數(shù)據(jù),那末當(dāng)創(chuàng)建索引時(shí),SQL Server檢查表中已有數(shù)據(jù)的冗余性;每當(dāng)使用插入語句插入數(shù)據(jù)或使用修改語句修改數(shù)據(jù)時(shí),SQL Server檢查數(shù)據(jù)的冗余性:如果有冗余值,那末SQL Server取消該語句的履行,并且返回1個(gè)毛病消息;確保表中的每行數(shù)據(jù)都有1個(gè)唯1值,這樣可以確保每個(gè)實(shí)體都可以唯1確認(rèn);只能在可以保證實(shí)體 完全性的列上創(chuàng)建唯1性索引,例如,不能在人事表中的姓名列上創(chuàng)建唯1性索引,由于人們可以有相同的姓名。

  • 復(fù)合索引就是1個(gè)索引創(chuàng)建在兩個(gè)列或多個(gè)列上。在搜索時(shí),當(dāng)兩個(gè)或多個(gè)列作為1個(gè)關(guān)鍵值時(shí),最好在這些列上創(chuàng)建復(fù)合索引。當(dāng)創(chuàng)建復(fù)合索引時(shí),應(yīng)當(dāng)斟酌 這些規(guī)則:最多可以把16個(gè)列合并成1個(gè)單獨(dú)的復(fù)合索引,構(gòu)成復(fù)合索引的列的總長度不能超過900字節(jié),也就是說復(fù)合列的長度不能太長;在復(fù)合索引中,所 有的列必須來自同1個(gè)表中,不能跨表建立復(fù)合列;在復(fù)合索引中,列的排列順序是非常重要的,因此要認(rèn)真排列列的順序,原則上,應(yīng)當(dāng)首先定義最唯1的列,例 如在(COL1,COL2)上的索引與在(COL2,COL1)上的索引是不相同的,由于兩個(gè)索引的列的順序不同;為了使查詢優(yōu)化器使用復(fù)合索引,查詢語 句中的WHERE子句必須參考復(fù)合索引中第1個(gè)列;當(dāng)表中有多個(gè)關(guān)鍵列時(shí),復(fù)合索引是非常有用的;使用復(fù)合索引可以提高查詢性能,減少在1個(gè)表中所創(chuàng)建的 索引數(shù)量。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 一区二区在线视频观看 | 日韩一二三四 | 亚洲成人高清av | 免费看成年人视频在线观看 | 欧美精品日韩精品 | 国产日韩精品视频 | 国产精品久久久久久久久久久免费看 | 黄色精品网站 | 欧美成人a交片免费看 | 黄色av大全 | 中文字幕在线一区 | 玖玖成人 | 在线一区二区三区 | 九色官网 | 在线成人精品国产区免费 | 欧美a在线 | 99久久精品国产毛片 | 国产精品尤物视频 | 久久综合国产 | 久久成人免费视频 | 激情欧美日韩一区二区 | 欧美综合77777色婷婷 | 99精品视频在线观看免费 | 永久精品 | 毛片高清| 国产精品久久亚洲 | 亚洲一区二区三区免费视频 | 久久精彩视频 | 亚洲一区在线播放 | 婷婷在线视频 | 极品视频在线 | 亚洲一二三在线观看 | 国产一级久久 | 福利视频一区 | 亚洲成人高清在线观看 | 久久高清精品 | 亚洲精品久久 | 特黄一级大片 | www.嫩草| 国产高清在线 | 欧美日韩性 |