創(chuàng)建和使用索引以提高性能

此頁沒有內(nèi)容條目
內(nèi)容

Access > 設(shè)計(jì)應(yīng)用程序

 

創(chuàng)建和使用索引以提高性能

如果經(jīng)常依據(jù)特定的字段搜索表或?qū)Ρ淼挠涗涍M(jìn)行排序,則可以通過創(chuàng)建該字段的索引來加快執(zhí)行這些操作的速度。Microsoft Office Access 在表中使用索引就如同您在書中使用索引一樣:為了查找數(shù)據(jù),Access 會(huì)在索引中查找數(shù)據(jù)的位置。在一些情況下,例如對(duì)于主鍵,Access 會(huì)自動(dòng)為您創(chuàng)建索引。在另一些情況下,您可能需要自己創(chuàng)建索引。

本文介紹索引,并說明如何確定為哪些字段創(chuàng)建索引,以及如何創(chuàng)建、刪除或更改索引。本文還說明 Access 在哪些情況下會(huì)自動(dòng)創(chuàng)建索引。

 注釋    不能使用本文所述的方法為 Web 數(shù)據(jù)庫中的表創(chuàng)建索引。Web 數(shù)據(jù)庫的性能取決于承載 Web 數(shù)據(jù)庫的 SharePoint 服務(wù)器的性能。

本文內(nèi)容


hrefIcon_ZA10069439 概述

hrefIcon_ZA10069439 確定為哪些字段創(chuàng)建索引

hrefIcon_ZA10069439 創(chuàng)建索引

hrefIcon_ZA10069439 刪除索引

hrefIcon_ZA10069439 查看和編輯索引

hrefIcon_ZA10069439 自動(dòng)創(chuàng)建索引


概述

可以使用索引來幫助 Access 更快速地查找記錄并對(duì)其進(jìn)行排序。索引根據(jù)自身包含的一個(gè)或多個(gè)字段來存儲(chǔ)記錄的位置。索引可以比它描述的表小得多,以便 Access 能夠更有效地進(jìn)行讀取,具體取決于索引字段的唯一值的數(shù)量。

索引的工作方式與書籍索引的工作方式類似

以書籍索引為例:書籍索引是一個(gè)包含書中出現(xiàn)的詞語的列表。另外,該列表中的每個(gè)條目還顯示了包含特定詞語的頁面的頁碼。若要在書中查找某個(gè)特定詞語,則使用索引進(jìn)行查找要比翻書查找的速度快得多。

在 Access 中,索引類似于一個(gè)表中出現(xiàn)的字段值的列表。另外,該列表中的每個(gè)條目還顯示了包含字段值的記錄的位置。若要查找某個(gè)特定的字段值,則使用索引進(jìn)行查找要比讀取整個(gè)表進(jìn)行查找的速度快得多。

利用索引可更快地查找出現(xiàn)次數(shù)較少的字段值

表中不同字段值的數(shù)量越多,索引對(duì)提高搜索和選擇查詢的性能的幫助就越大。給定字段值在表中出現(xiàn)的次數(shù)越多,索引帶來的性能改進(jìn)就越少。以書中出現(xiàn)的詞語為例:“的”一詞可能會(huì)在書中頻繁出現(xiàn),以致于閱讀該詞的列表項(xiàng)所花費(fèi)的時(shí)間幾乎與閱讀整本書所花費(fèi)的時(shí)間相當(dāng)!同樣,對(duì)于僅包含幾個(gè)值的字段而言,為其創(chuàng)建索引也不會(huì)帶來更多好處,這是因?yàn)槊總€(gè)值出現(xiàn)的次數(shù)太多了。

當(dāng) Access 通過索引獲得記錄的位置后,可通過直接移到正確的位置來檢索這些記錄中的數(shù)據(jù)。這樣一來,使用索引查找數(shù)據(jù)會(huì)比通過掃描表中的所有記錄來查找數(shù)據(jù)快很多。

索引會(huì)降低更改數(shù)據(jù)的速度

在追加、刪除或更新數(shù)據(jù)時(shí),必須更新受影響的表中的所有索引以反映變化。這會(huì)影響性能。再次以書為例:如果您進(jìn)行更改,則同時(shí)必須更改索引,否則索引將不正確。更改索引會(huì)花費(fèi)很多時(shí)間,而如果沒有任何索引,則可節(jié)省這些時(shí)間。Access 也是如此:索引會(huì)使更改數(shù)據(jù)所花費(fèi)的時(shí)間更多。

TopPageIcon_CLV 返回頁首

確定為哪些字段創(chuàng)建索引

可以根據(jù)一個(gè)字段或多個(gè)字段來創(chuàng)建索引。您應(yīng)考慮為如下字段創(chuàng)建索引:經(jīng)常搜索的字段、進(jìn)行排序的字段,以及在查詢中聯(lián)接到其他表中的字段的字段。索引可幫助加快搜索和選擇查詢的速度,但在您添加或更新數(shù)據(jù)時(shí),索引會(huì)降低性能。

如果在包含一個(gè)或更多個(gè)索引字段的表中輸入數(shù)據(jù),則每次添加或更改記錄時(shí),Access 都必須更新索引。如果目標(biāo)表包含索引,則通過使用追加查詢或通過追加導(dǎo)入的記錄來添加記錄也可能會(huì)比平時(shí)慢。

 注釋    表中的主鍵是自動(dòng)創(chuàng)建索引的。有關(guān)主鍵的詳細(xì)信息,請(qǐng)參閱“請(qǐng)參閱”部分。

無法為數(shù)據(jù)類型為“OLE 對(duì)象”、“附件”或“計(jì)算”的字段創(chuàng)建索引。對(duì)于其他字段,如果滿足以下所有條件,則考慮為字段創(chuàng)建索引:

預(yù)期會(huì)搜索存儲(chǔ)在字段中的值。
預(yù)期會(huì)對(duì)字段中的值進(jìn)行排序。
預(yù)期會(huì)在字段中存儲(chǔ)許多不同的值。如果字段中的許多值都是相同的,則索引可能無法顯著加快查詢速度。

多字段索引

如果您覺得自己將經(jīng)常同時(shí)依據(jù)兩個(gè)或更多個(gè)字段進(jìn)行搜索或排序,則可以為該字段組合創(chuàng)建索引。例如,如果經(jīng)常在同一個(gè)查詢中為“供應(yīng)商”和“產(chǎn)品名稱”字段指定條件,則在這兩個(gè)字段上創(chuàng)建多字段索引就很有意義。

依據(jù)多字段索引對(duì)表進(jìn)行排序時(shí),Access 會(huì)先依據(jù)為索引定義的第一個(gè)字段來進(jìn)行排序。創(chuàng)建多字段索引時(shí),您要指定字段的次序。如果在第一個(gè)字段中的記錄具有重復(fù)值,則 Access 會(huì)接著依據(jù)為索引定義的第二個(gè)字段來進(jìn)行排序,依次類推。

在一個(gè)多字段索引中最多可以包含 10 個(gè)字段。

TopPageIcon_CLV 返回頁首

創(chuàng)建索引

要?jiǎng)?chuàng)建索引,請(qǐng)先決定是創(chuàng)建單字段索引還是多字段索引。通過設(shè)置“索引”屬性可創(chuàng)建單字段索引。下表列出了“索引”屬性的可能設(shè)置。

“索引”屬性的設(shè)置

含義

不在此字段上創(chuàng)建索引(或刪除現(xiàn)有索引)

有(有重復(fù))

在此字段上創(chuàng)建索引

有(無重復(fù))

在此字段上創(chuàng)建唯一索引

如果創(chuàng)建唯一索引,則 Access 不允許您在字段中輸入這樣的新值:該值已在其他記錄的同一字段中存在。Access 會(huì)自動(dòng)為主鍵創(chuàng)建唯一索引,但您可能也想禁止其他字段中的重復(fù)值。例如,可以在一個(gè)存儲(chǔ)序列號(hào)的字段上創(chuàng)建唯一索引,以便不會(huì)有兩個(gè)產(chǎn)品具有相同的序列號(hào)。

有關(guān)主鍵的詳細(xì)信息,請(qǐng)單擊“請(qǐng)參閱”部分中的鏈接。

創(chuàng)建單字段索引

1.在“導(dǎo)航窗格”中,右鍵單擊想在其中創(chuàng)建索引的表的名稱,然后在快捷菜單上單擊“設(shè)計(jì)視圖”。
2.單擊您想創(chuàng)建索引的字段的“字段名稱”
3.“字段屬性”下,單擊“常規(guī)”選項(xiàng)卡。
4.“索引”屬性中,如果想允許重復(fù),則單擊“有(有重復(fù))”,否則單擊“有(無重復(fù))”以創(chuàng)建唯一索引。
5.要保存更改,請(qǐng)?jiān)?/span>“快速訪問工具欄”上單擊“保存”,或者按 Ctrl+S。

創(chuàng)建多字段索引

1.在“導(dǎo)航窗格”中,右鍵單擊想在其中創(chuàng)建索引的表的名稱,然后單擊“設(shè)計(jì)視圖”。
2.“設(shè)計(jì)”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“索引”

此時(shí)會(huì)出現(xiàn)“索引”窗口。調(diào)整窗口大小,以便顯示一些空白行和索引屬性。

要為表創(chuàng)建多字段索引,您要在“索引”窗口中為索引中的每個(gè)字段包含一行,并且僅在第一行中包含索引名稱。Access 將所有行視為同一索引的一部分,直至它遇到包含另一個(gè)索引名稱的行為止。要插入一行,請(qǐng)右鍵單擊想插入一行的位置,然后在快捷菜單上單擊“插入行”。

3.“索引名稱”列中,在第一個(gè)空白行內(nèi)鍵入索引的名稱??梢园凑漳骋粋€(gè)索引字段的名稱來命名索引,也可以使用其他名稱。
4.“字段名稱”列中,單擊箭頭,然后單擊想用于索引的第一個(gè)字段。
5.在下一行中,將“索引名稱”列留空,然后,在“字段名稱”列中單擊索引的第二個(gè)字段。重復(fù)此步,直至選擇了要包含在索引中的所有字段為止。

 注釋    默認(rèn)的排序次序是升序

6.要更改字段值的排序次序,請(qǐng)?jiān)凇八饕贝翱诘?/span>“排序次序”列中單擊“升序”“降序”
7.“索引”窗口中的“索引屬性”下,為“索引名稱”列中包含索引名稱的行指定索引屬性。請(qǐng)依據(jù)下表來設(shè)置屬性。

標(biāo)簽

Value

主索引

如果為“是”,則索引為主鍵。

唯一索引

如果為“是”,則索引中的每個(gè)值必須唯一。

忽略空值

如果為“是”,則在索引字段中具有空值的記錄被排除在索引之外。

8.要保存更改,請(qǐng)?jiān)?/span>“快速訪問工具欄”上單擊“保存”

鍵盤快捷方式  按 Ctrl+S。

9.關(guān)閉“索引”窗口。

TopPageIcon_CLV 返回頁首

刪除索引

如果發(fā)現(xiàn)某個(gè)索引已變得多余或?qū)π阅艿挠绊懱?,則可以刪除它。刪除索引時(shí),只會(huì)刪除索引而不會(huì)刪除建立索引時(shí)所依據(jù)的字段。

1.在“導(dǎo)航窗格”中,右鍵單擊想在其中刪除索引的表的名稱,然后在快捷菜單上單擊“設(shè)計(jì)視圖”
2.“設(shè)計(jì)”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“索引”

此時(shí)會(huì)出現(xiàn)“索引”窗口。調(diào)整窗口大小,以便顯示一些空白行和索引屬性。

3.在“索引”窗口中,選擇包含您想刪除的索引的行,然后按 Delete。

提示  確保選擇整個(gè)行。

4.要保存更改,請(qǐng)?jiān)?/span>“快速訪問工具欄”上單擊“保存”。

鍵盤快捷方式  按 Ctrl+S。

5.關(guān)閉“索引”窗口。

TopPageIcon_CLV 返回頁首

查看和編輯索引

您可能想查看表的索引,以衡量它們對(duì)性能的影響,或者確保為特定的字段創(chuàng)建了索引。

1.在“導(dǎo)航窗格”中,右鍵單擊想在其中更改索引的表的名稱,然后在快捷菜單上單擊“設(shè)計(jì)視圖”。
2.“設(shè)計(jì)”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“索引”。

此時(shí)會(huì)出現(xiàn)“索引”窗口。調(diào)整窗口大小,以便顯示一些空白行和索引屬性。

3.按照您的需要查看或編輯索引及索引屬性。
4.要保存更改,請(qǐng)?jiān)?/span>“快速訪問工具欄”上單擊“保存”。

鍵盤快捷方式  按 Ctrl+S。

5.關(guān)閉“索引”窗口。

TopPageIcon_CLV 返回頁首

自動(dòng)創(chuàng)建索引

在一些情況下,Access 會(huì)自動(dòng)為您創(chuàng)建索引。例如,會(huì)自動(dòng)對(duì)指定為表的主鍵的任何字段創(chuàng)建索引。

自動(dòng)創(chuàng)建索引的另一個(gè)來源是“Access 選項(xiàng)”對(duì)話框中的“在導(dǎo)入/創(chuàng)建時(shí)自動(dòng)索引”選項(xiàng)。對(duì)于名稱以在“在導(dǎo)入/創(chuàng)建時(shí)自動(dòng)索引”框中輸入的字符(例如 IDkey、codenum)開始或結(jié)束的任何字段,Access 都會(huì)自動(dòng)為它們創(chuàng)建索引。要查看或更改當(dāng)前的設(shè)置,請(qǐng)執(zhí)行下列步驟:

1.“文件”選項(xiàng)卡上,單擊“選項(xiàng)”。
2.在“Access 選項(xiàng)”對(duì)話框的左窗格中,單擊“對(duì)象設(shè)計(jì)器”,然后在“表設(shè)計(jì)視圖”下的“在導(dǎo)入/創(chuàng)建時(shí)自動(dòng)索引”框中編輯值。使用分號(hào) (;) 來分隔值。

 注釋    如果字段名以此框中列出的值開始或結(jié)束,則會(huì)自動(dòng)為字段創(chuàng)建索引。

3.單擊“確定”。

由于每一個(gè)額外的索引均需要 Access 執(zhí)行額外的工作,因此,在添加或更新數(shù)據(jù)時(shí)性能會(huì)降低。這樣一來,您可能需要考慮更改在“在導(dǎo)入/創(chuàng)建時(shí)自動(dòng)索引”框中顯示的值,或減少值的數(shù)量,以最大程度地減少所創(chuàng)建的索引數(shù)量。

TopPageIcon_CLV 返回頁首