為什麼建立索引能提高資料庫效能,資料庫索引為什麼會提高查詢速度?

2022-11-15 13:06:13 字數 5702 閱讀 3468

1樓:汪雄輝拉

說的明白點,把乙個表看成是乙個字典,字典總用過的把,裡面除了單詞資訊,還有乙個很重要的東西,就是檢索目錄,比如,拼音檢索,偏旁檢索,筆畫檢索之類, 資料庫裡面表的索引就可以看成是檢索目錄,(一種檢索代表乙個索引)資料庫中會單獨劃一塊空間或者檔案來儲存索引資訊,就像字典這樣,前面幾十頁用於儲存檢索目錄,通過這個檢索目錄,我們可以很快的找到我們想要的資訊,但是,索引不是越多越好,要切合實際,還是拿字典來說事,比如說現在要往字典裡新增文字,那麼我就必須維護我的檢索目錄,檢索目錄頁必須同時更新,有幾個檢索目錄,我就要更新幾個,這樣的話,也就是說,資料庫索引太多,對資料庫更新時,索引的維護也會很大。

2樓:匿名使用者

所謂索引提高資料庫效能,只能在索引列上查詢的時候,才能提公升查詢效率。

在索引列上查詢的時候,先通過索引,找到頁碼,然後直接定位到資料所在的位址,相比起全表掃瞄,效率自然是提公升了很多。

3樓:

通俗點將:就相當於我們看書的書籤,有了書籤是不是想看那一頁的內容好找些,

要是沒有書籤,只能從頭開始一筆一筆的找,但看書次數多了,書籤也會亂掉,

所以一段時間,也要重整下書籤

索引也是同樣的道理,也會產生碎片,需要索引重整!!!

4樓:匿名使用者

因為索引就像乙個書籤,有了書籤你翻書找內容也比較節省時間,也不費力,效率自然就體高了很多。

資料庫建立索引有什麼優點和缺點

5樓:丹黛

一、資料庫中建立索引的優點

1、建立唯一性索引,保證資料庫表中每一行資料的唯一性。

2、加快資料的檢索速度,這也是建立索引的最主要的原因。

3、減少磁碟io(向字典一樣可以直接定位)。

4、通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

5、加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

二、資料庫中建立索引的缺點

1、建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

2、索引需要占用物理空間,特別是聚集索引,需要較大的空間。

3、當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

6樓:匿名使用者

資料庫中索引的優缺點

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

也許會有人要問:增加索引有如此多的優點,為什麼不對錶中的每乙個列建立乙個索引呢?這種想法固然有其合理性,然而也有其片面性。

雖然,索引有許多優點,但是,為表中的每乙個列都增加索引,是非常不明智的。這是因為,增加索引也有許多不利的乙個方面。第一,建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

第二,索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。第三,當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

索引是建立在資料庫表中的某些列的上面。因此,在建立索引的時候,應該仔細考慮在哪些列上可以建立索引,在哪些列上不能建立索引。一般來說,應該在這些列上建立索引,例如:

在經常需要搜尋的列上,可以加快搜尋的速度;在作為主鍵的列上,強制該列的唯一性和組織表中資料的排列結構;在經常用在連線的列上,這些列主要是一些外來鍵,可以加快連線的速度;在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的;在經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經常使用在where子句中的列上面建立索引,加快條件的判斷速度。

同樣,對於有些列不應該建立索引。一般來說,不應該建立索引的的這些列具有下列特點:第一,對於那些在查詢中很少使用或者參考的列不應該建立索引。

這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那些只有很少資料值的列也不應該增加索引。

這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比例,即需要在表中搜尋的資料行的比例很大。增加索引,並不能明顯加快檢索速度。第三,對於那些定義為text, image和bit資料型別的列不應該增加索引。

這是因為,這些列的資料量要麼相當大,要麼取值很少。第四,當修改效能遠遠大於檢索效能時,不應該建立索引。這是因為,修改效能和檢索效能是互相矛盾的。

當增加索引時,會提高檢索效能,但是會降低修改效能。當減少索引時,會提高修改效能,降低檢索效能。因此,當修改效能遠遠大於檢索效能時,不應該建立索引。

資料庫索引為什麼會提高查詢速度?

7樓:爬蟲小能手

首先是建立在記憶體上。且一般只有數字主鍵時快的明顯一些。

8樓:匿名使用者

你的理解其實沒啥問題。索引就是通過事先排好序,從而在查詢時可以應用二分查詢等高效率的演算法。

一般的順序查詢,複雜度為o(n),而二分查詢複雜度為o(log2n)。當n很大時,二者的效率相差及其懸殊。

舉個例子:

表中有一百萬條資料,需要在其中尋找一條特定id的資料。如果順序查詢,平均需要查詢50萬條資料。而用二分法,至多不超過20次就能找到。二者的效率差了2.5萬倍!

9樓:攻城獅

比如說 一本書 你要查 一段資料 你是 去把整本書翻一遍 快呢 還是 從目錄開始找 快呢 ,索引就是這個 目錄了。

資料庫中為什麼建立索引可以提高查詢速度,舉個例子具體說明一下

10樓:匿名使用者

詳細一點:

就跟書的目錄一樣,書的內容就是資料庫資料,用目錄找比一頁一頁找快;

11樓:匿名使用者

打個比方,新華字典,是不是把所有漢字按拼音排序了?我們查字時,只要知道這個字的發音,不用查前面的檢字表,也可以立即翻到相應的頁碼附近。再根據拼音的順序前翻或後翻幾頁就能找著要查的字。

如果漢字沒有按拼音的順序排序,那麼查起來就會困難不知多少倍!

12樓:匿名使用者

就像你在百科全書中找東西一樣,通過索引比你一頁頁翻快的多!

13樓:愛可生雲資料庫

你建立了可查詢目錄,要查詢什麼,對應索引去找就可以了啊。

資料庫新增索引為什麼能加快查詢速度

14樓:

索引加快查詢速度的原理:

建立索引時,資料庫就會對資料按照一定的規則存放,資料檢索的時候,已經是有序了,所以可以很快的速度檢索出來哦

索引對資料庫效能的影響

反之沒有索引的有序排列,那麼每次查詢資料,都會掃瞄整張表,加大查詢的開銷,會使查詢速度變慢。

資料庫索引優缺點

15樓:day忘不掉的痛

優點:資料庫系統是用來管理資料的,建立的數理邏輯和集合操作基礎上的。

具有高效、可靠、完整、自同步等特性,是業務系統進行資料控制的最佳選擇。

資料庫系統一般提供高效的資料控制和資料檢索功能,採用sql語言來進行資料操作。

目前市面上流行的資料庫系統很多:較小型的資料庫系統有:mysql,mssql_server等等,適用於企業級的大型資料庫有:

oracel,db2(ibm),informix(ibm)等等

缺點:安全性不夠,加了使用者級密碼容易破解

c/s 結構下對伺服器要求很高,否則容易造成 mdb 損壞併發數255。

但是對高強度操作適應性差,如果伺服器不夠好,網路不夠好,程式設計的方法不夠好,6-7個人同時訪問就能導致 mdb 損壞或者並死不能將 vba **開發的軟體系統直接編譯成 exe 可執行檔案。

不能脫離 access 或者 access runtime 環境,該環境相對其他軟體體積較大(50m左右)

16樓:

聚集索引 非聚集索引 索引的好處是為了增加查詢速度 建的不好的話會導致查詢非常的慢

17樓:匿名使用者

只要優點 沒有缺點 缺點就是資料庫軟體貴

管理技術要求高 ....別的沒有了

18樓:匿名使用者

建立索引的好處

建立索引可以大大提高資料庫系統的查詢效能。

a) 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

b) 可以大大加快資料的檢索速度,這也是建立索 引的最主要的原因。

c) 可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

d) 在使用分組和排序子句進行資料檢索時,同樣可以 顯著減少查詢中分組和排序的時間。

e) 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

建立索引需要付出的代價

建立索引的目的是加快對錶中記錄的查詢或排序。但是為表設定索引是要付出代價的:這個代價有幾個個方面

a) 索引需要佔物理空間

除了資料表佔資料空間之 外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

b) 建立索引和維護索引要耗費時間

這種時間隨著資料量的增加而增加。

c) 降低維護速度

當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維 護,這樣就降低了資料的維護速度,同樣降低了效率。

19樓:

建立索引可以大大提高系統的效能:

第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。

第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

第四,在使用分組和排序 子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

增加索引也有許多不利的方面:

第一,建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

第二,索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

第三,當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

索引是建立在資料庫表中的某些列的上面。因此,在建立索引的時候,應該仔細考慮在哪些列上可以建立索引,在哪些列上不能建立索引。一般來說,應該在這些列上建立索引,例如:

在經常需要搜尋的列上,可以加快搜尋的速度;

在作為主鍵的列上,強制該列的唯一性和組織表中資料的排列結構;

在經常用在連線的列上,這 些列主要是一些外來鍵,可以加快連線的速度;

在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的;

在經常需要排序的列上創 建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;

在經常使用在where子句中的列上面建立索引,加快條件的判斷速度。

資料庫索引是什麼,有什麼用,怎麼用

資料庫索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。索引的乙個主要目的就是加快檢索表中資料的方法,亦即能協助資訊搜尋者盡快的找到符合限制條件的記錄id的輔助資料結構。...

為什麼在MySQL資料庫中建立檢查約束不成功呢,語句是這樣的

mysql檢查約束是有問題。只是注釋的作用。在程式控制吧 這是一項新功能,用於指定在插入或更新到一行之前檢查值的條件。如果表的任何行的搜尋條件的結果為 false,則約束可能返回錯誤 但如果結果為 unknown 或 true,則約束不會返回錯誤 此功能開始在 mysql 8.0.16 上執行,在以...

oracle 建立資料庫和表空間有什麼聯絡

表空間是個邏輯單位,它由資料檔案組成。表空間 資料檔案 段 區 塊 資料庫的初始建立,就會需要用到基礎的表空間,比如system,temp,undo等必須的表空間。oracle資料庫本身由instance database 這裡的database是相對於instance而言的資料庫,它傾向於指向資料...