資料庫索引

2021-07-10 21:26:43 字數 1840 閱讀 9241

1)什麼是資料庫索引

在資料庫系統中,除了儲存資料庫表的結構與資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是索引。通俗的講,索引就是對資料庫表中一列或多列的值進行排序的一種結構。

.2)為什麼要建立資料庫索引

索引是經過某種演算法優化過的,通過索引可快速訪問、修改資料庫表中的資料資訊,簡而言之,通過索引不需要掃瞄整個資料庫就可以得到想要的資料資訊,以提高資料庫的訪問效率。

.3)資料庫索引的分類

索引分為聚簇索引和非聚簇索引兩種:

(1)聚簇索引,表資料按照索引的順序來儲存的,能提高多行檢索的速度。

(2)非聚簇索引,表資料儲存順序與索引順序無關,對於單行的檢索很快。

根據資料庫的功能,可以在資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引。

唯一索引 

唯一索引是不允許其中任何兩行具有相同索引值的索引,儘管唯一索引有助於定位資訊,但是為了獲取最佳效能效果,一般建議使用主鍵索引或者唯一約束。

主鍵索引 

對錶的主鍵建立的索引,是唯一索引的特定型別。

聚集索引 

表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。

.4)資料庫索引的建立與運用

先來建立一張測試表:

[html]view plain

copy

create table index_test(  

id int primary key,  

name char(20),  

status char(1)  

);  

插入資料:

[html]view plain

copy

insert into index_test values(1,'index1','0');  

insert into index_test values(2,'index2','0');  

insert into index_test values(3,'index3','0');  

建立基於status列的索引:create index index_test_status on  index_test(status);

建立完索引,如何檢視索引是否已經啟用了呢,我們用explain命令檢視一下:

explain select * from index_test where status='0';

可以看到如下結果:

[html]view plain

copy

<

imgid

="img"

src=

""alt=

""/>

可以看到,在possible_keys中應用了index_test_status索引。

刪除索引:

drop index index_test_status on index_test;

.5)索引的實現方式

後續補充

.6)索引的儲存結構

後續補充

.7)索引的優缺點

優點:1.大大加快資料的檢索速度;   

2.建立唯一性索引,保證資料庫表中每一行資料的唯一性;   

3.加速表和表之間的連線;   

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

缺點:1.索引需要占用資料表以外的物理儲存空間

2.建立索引和維護索引要花費一定的時間

3.當對表進行更新操作時,索引需要被重建,這樣降低了資料的維護速度。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...