唯一索引與主鍵索引的比較

2022-06-12 05:06:10 字數 1394 閱讀 8135

唯一索引

唯一索引不允許兩行具有相同的索引值。

如果現有資料中存在重複的鍵值,則大多數資料庫都不允許將新建立的唯一索引與表一起儲存。當新資料將使表中的鍵值重複時,資料庫也拒絕接受此資料。例如,使用者表中的身份證(idcard) 列上建立了唯一索引,則所有身份證不能重複

主鍵索引

主鍵索引是唯一索引的特殊型別。

資料庫表通常有一列或列組合,其值用來唯一標識表中的每一行。該列稱為表的主鍵。

在資料庫關係圖中為表定義乙個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別。主鍵索引要求主鍵中的每個值是唯一的。當在查詢中使用主鍵索引時,它還允許快速訪問資料。

比較:

1對於主健/unique constraint , oracle/sql server/mysql等都會自動建立唯一索引;

2主鍵不一定只包含乙個字段,所以如果你在主鍵的其中乙個欄位建唯一索引還是必要的;

3主健可作外健,唯一索引不可;

4主健不可為空,唯一索引可;

5主健也可是多個欄位的組合;

6主鍵與唯一索引不同的是:

(1).有not null屬性;

(2).每個表只能有乙個。

索引的注意事項

1.組合或者引用關係的子表(資料量較大的時候),需要在關聯主表的列上建立非聚集索引(如訂單明細表中的產品id欄位、訂單明細表中關聯的訂單id欄位)

2.索引鍵的大小不能超過900個位元組,當列表的大小超過900個位元組或者若干列的和超過900個位元組時,資料庫將報錯。

3.表中如果建有大量索引將會影響insert、update和delete語句的效能,因為在表中的資料更改時,所有的索引都將必須進行適當的調整。需要避免對經常更新的表進行過多的索引,並且索引應保持較窄,就是說:列要盡可能的少。

4.為經常用於查詢的謂詞建立索引,如用於下拉參照快速查詢的code、name等。在平台現有下拉參照的查詢sql語句中的like條件語句要改成不帶前置萬用字元。還有需要關注order by和group by謂詞的索引設計,order by和group by的謂詞是需要排序的,某些情況下為order by和group by的謂詞建立索引,會避免查詢時的排序動作。

4.對於內容基本重複的列,比如只有1和0,禁止建立索引,因為該索引選擇性極差,在特定的情況下會誤導優化器做出錯誤的選擇,導致查詢速度極大下降。

5.當乙個索引有多個列構成時,應注意將選擇性強的列放在前面。僅僅前後次序的不同,效能上就可能出現數量級的差異。

6.對小表進行索引可能不能產生優化效果,因為查詢優化器在遍歷用於搜尋資料的索引時,花費的時間可能比執行簡單的表掃瞄還長,設計索引時需要考慮表的大小。記錄數不大於100的表不要建立索引。頻繁操作的小數量表不建議建立索引(記錄數不大於5000條)

唯一索引與主鍵索引的比較

唯一索引 唯一索引不允許兩行具有相同的索引值。如果現有資料中存在重複的鍵值,則大多數資料庫都不允許將新建立的唯一索引與表一起儲存。當新資料將使表中的鍵值重複時,資料庫也拒絕接受此資料。例如,如果在 employee 表中的職員姓氏 lname 列上建立了唯一索引,則所有職員不能同姓。主鍵索引 主鍵索...

唯一索引與主鍵索引的比較

唯一索引 唯一索引不允許兩行具有相同的索引值。如果現有資料中存在重複的鍵值,則大多數資料庫都不允許將新建立的唯一索引與表一起儲存。當新資料將使表中的鍵值重複時,資料庫也拒絕接受此資料。例如,如果在 employee 表中的職員姓氏 lname 列上建立了唯一索引,則所有職員不能同姓。主鍵索引 主鍵索...

普通索引 唯一索引 主鍵索引 候選索引

1 普通索引 1 定義 最基本的索引型別,沒有唯一性之類的限制。2 建立方式 a 建立索引,例如create index 索引的名字 on tablename 列的列表 b 修改表,例如alter table tablename add index 索引的名字 列的列表 c 建立表的時候指定索引,例...