收藏
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的新會(huì)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
問題反饋
索引
索引,使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。 在關(guān)系數(shù)據(jù)庫(kù)中,索引是一種與表有關(guān)的數(shù)據(jù)庫(kù)結(jié)構(gòu),它可以使對(duì)應(yīng)于表的SQL語(yǔ)句執(zhí)行得更快。索引的作用相當(dāng)于圖書的目錄,可以根據(jù)目錄中的頁(yè)碼快速找到所需的內(nèi)容。當(dāng)表中有大量記錄時(shí),若要對(duì)表進(jìn)行查詢,第一種搜索信息方式是全表搜索,是將所有記錄一一取出,和查詢條件進(jìn)行一一對(duì)比,然后返回滿足條件的記錄,這樣做會(huì)消耗大量數(shù)據(jù)庫(kù)系統(tǒng)時(shí)間,并造成大量磁盤I/O操作;第二種就是在表中建立索引,然后在索引中找到符合查詢條件的索引值,最后通過(guò)保存在索引中的ROWID(相當(dāng)于頁(yè)碼)快速找到表中對(duì)應(yīng)的記錄。 索引是一個(gè)單獨(dú)的、物理的數(shù)據(jù)庫(kù)結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。 索引提供指向存儲(chǔ)在表的指定列中的數(shù)據(jù)值的指針,然后根據(jù)您指定的排序順序?qū)@些指針排序。數(shù)據(jù)庫(kù)使用索引的方式與您使用書籍中的索引的方式很相似:它搜索索引以找到特定值,然后順指針找到包含該值的行。 在數(shù)據(jù)庫(kù)關(guān)系圖中,可以在選定表的“索引/鍵”屬性頁(yè)中創(chuàng)建、編輯或刪除每個(gè)索引類型。當(dāng)保存索引所附加到的表,或保存該表所在的關(guān)系圖時(shí),索引將保存在數(shù)據(jù)庫(kù)中。
語(yǔ)法:
CREATE [索引類型] INDEX 索引名稱
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*實(shí)例*/
USE 庫(kù)名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--檢測(cè)是否已經(jīng)存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在則刪除
--創(chuàng)建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --創(chuàng)建一個(gè)非聚集索引
ON TEST(TNAME) --為TEST表的TNAME字段創(chuàng)建索引
WITH FILLFACTOR = 30 --填充因子為30%
GO
附錄:
1.什么是索引:數(shù)據(jù)庫(kù)中的索引是某個(gè)表中一列或多列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。
2.分類:
唯一索引(UNIQUE):不允許兩行具有相同的索引值(創(chuàng)建了唯一約束,系統(tǒng)將自動(dòng)創(chuàng)建唯一索引)
主鍵索引:主鍵索引要求主鍵中的每個(gè)值是唯一的,(創(chuàng)建主鍵自動(dòng)創(chuàng)建主鍵索引)
聚集索引(CLUSTERED):表中各行的物理順序與鍵值的邏輯(索引)順序相同,表中只能包含一個(gè)聚集索引,主鍵列默認(rèn)為聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理順序與鍵值的邏輯(索引)順序不匹配,表中可以有249個(gè)非聚集索引
3.創(chuàng)建索引的標(biāo)準(zhǔn):用語(yǔ)頻繁搜索的列;用語(yǔ)對(duì)數(shù)據(jù)進(jìn)行排序的列
索引的用途:我們對(duì)數(shù)據(jù)查詢及處理速度已成為衡量應(yīng)用系統(tǒng)成敗的標(biāo)準(zhǔn),而采用索引來(lái)加快數(shù)據(jù)處理速度通常是最普遍采用的優(yōu)化方法。
索引是什么:數(shù)據(jù)庫(kù)中的索引類似于一本書的目錄,在一本書中使用目錄可以快速找到你想要的信息,而不需要讀完全書。在數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)程序使用索引可以重啊到表中的數(shù)據(jù),而不必掃描整個(gè)表。書中的目錄是一個(gè)字詞以及各字詞所在的頁(yè)碼列表,數(shù)據(jù)庫(kù)中的索引是表中的值以及各值存儲(chǔ)位置的列表。
索引的利弊:查詢執(zhí)行的大部分開銷是I/O,使用索引提高性能的一個(gè)主要目標(biāo)是避免全表掃描,因?yàn)槿頀呙栊枰獜拇疟P上讀取表的每一個(gè)數(shù)據(jù)頁(yè),如果有索引指向數(shù)據(jù)值,則查詢只需要讀少數(shù)次的磁盤就行啦。所以合理的使用索引能加速數(shù)據(jù)的查詢。但是索引并不總是提高系統(tǒng)的性能,帶索引的表需要在數(shù)據(jù)庫(kù)中占用更多的存儲(chǔ)空間,同樣用來(lái)增刪數(shù)據(jù)的命令運(yùn)行時(shí)間以及維護(hù)索引所需的處理時(shí)間會(huì)更長(zhǎng)。所以我們要合理使用索引,及時(shí)更新去除次優(yōu)索引。
相當(dāng)于把1個(gè)巨大的表拆分成數(shù)百個(gè)小表,特別是按照日期分,如果數(shù)據(jù)有3-5年,因?yàn)槊看卧L問可能只是幾天-幾個(gè)月,這樣就極大的縮少了數(shù)據(jù)范圍,掃描的數(shù)據(jù)量少了,速度自然快了。。
再加上使用分區(qū)索引后,分區(qū)索引是針對(duì)單個(gè)分區(qū)表的索引,這樣就會(huì)存在多個(gè)B+的索引,索引小了,維護(hù)起來(lái)自然快了,在單個(gè)分區(qū)里查詢,其面對(duì)的索引樹也是很小的,自然相關(guān)性能就提高了。。