Mysql學習筆記三:索引

在關係數據庫中,如果有上萬甚至上億條記錄,在查找記錄的時候,想要獲得非常快的速度,就需要使用索引。

索引是關係數據庫中對某一列或多個列的值進行預排序的數據結構。通過使用索引,可以讓數據庫系統不必掃描整個表,而是直接定位到符合條件的記錄,這樣就大大加快了查詢速度。

例如,對於students表:

id class_id name gender score
1 1 小明 M 90
2 1 小紅 F 95
3 1 小軍 M 88

如果要經常根據score列進行查詢,就可以對score列創建索引:

ALTER TABLE students
ADD INDEX idx_score (score);

索引如果有多列,可以在括號裏依次寫上,例如:

ALTER TABLE students
ADD INDEX idx_name_score (name, score);

索引的效率取決於索引列的值是否散列,即該列的值如果越互不相同,那麼索引效率越高。

可以對一張表創建多個索引。索引的優點是提高了查詢效率,缺點是在插入、更新和刪除記錄時,需要同時修改索引,因此,索引越多,插入、更新和刪除記錄的速度就越慢。

對於主鍵,關係數據庫會自動對其創建主鍵索引。使用主鍵索引的效率是最高的,因爲主鍵會保證絕對唯一。

唯一索引

在設計關係數據表的時候,看上去唯一的列,例如身份證號、郵箱地址等,因爲他們具有業務含義,因此不宜作爲主鍵。

但是,這些列根據業務要求,又具有唯一性約束:即不能出現兩條記錄存儲了同一個身份證號。這個時候,就可以給該列添加一個唯一索引。例如,我們假設students表的name不能重複:

ALTER TABLE students
ADD UNIQUE INDEX uni_name (name);

通過UNIQUE關鍵字我們就添加了一個唯一索引。

也可以只對某一列添加一個唯一約束而不創建唯一索引:

ALTER TABLE students
ADD CONSTRAINT uni_name UNIQUE (name);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章