mongo 唯一約束索引 mysql 索引

2021-10-14 10:21:29 字數 1313 閱讀 1604

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

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

使用add index idx_score (score)就建立了乙個名稱為idx_score,使用列score的索引。索引名稱是任意的,索引如果有多列,可以在括號裡依次寫上,例如:

alter table studentsadd index idx_name_score (name, score);
索引的效率取決於索引列的值是否雜湊,即該列的值如果越互不相同,那麼索引效率越高。反過來,如果記錄的列存在大量相同的值,例如gender列,大約一半的記錄值是m,另一半是f,因此,對該列建立索引就沒有意義。

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

對於主鍵,關聯式資料庫會自動對其建立主鍵索引。使用主鍵索引的效率是最高的,因為主鍵會保證絕對唯一。

唯一索引

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

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

alter table studentsadd unique index uni_name (name);
通過unique關鍵字我們就新增了乙個唯一索引。

也可以只對某一列新增乙個唯一約束而不建立唯一索引:

alter table studentsadd constraint uni_name unique (name);
這種情況下,name列沒有索引,但仍然具有唯一性保證。

無論是否建立索引,對於使用者和應用程式來說,使用關聯式資料庫不會有任何區別。這裡的意思是說,當我們在資料庫中查詢時,如果有相應的索引可用,資料庫系統就會自動使用索引來提高查詢效率,如果沒有索引,查詢也能正常執行,只是速度會變慢。因此,索引可以在使用資料庫的過程中逐步優化。

小結通過對資料庫表建立索引,可以提高查詢速度。

通過建立唯一索引,可以保證某一列的值具有唯一性。

資料庫索引對於使用者和應用程式來說都是透明的。

mongo 唯一約束索引 MySQL索引原理

一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,在生產環境中,我們遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,因此對查詢語句的優化顯然是重中之重。說起加速查詢,就不得不提到索引了。索引在mysql中也叫是一種 鍵 是儲存引擎用於快速找到記錄的一種資料...

唯一約束,主鍵約束,唯一索引

1.unique約束和primary key約束用來保證同一表中指定的列上沒有重複值,這兩個約束都產生唯一索引確保資料一致性,預設情況下,unique約束產生唯一的非聚集索引,primary key約束產生唯一的聚集索引。primary key約束比unique約束嚴格 primary key列不允...

oracle 唯一約束 和 唯一索引

唯一性約束 唯一性約束指表中乙個字段或者多個字段聯合起來能夠唯一標識一條記錄的約束。聯合欄位中,可以包含空值。注 在oracle中,唯一性約束最多可以有32列。唯一性約束可以在建立表時或使用alter table語句建立。唯一性約束和主鍵的區別 主鍵 primary key 所有組成主鍵的列都不能包...