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 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...