mysql 索引及區別

2021-10-03 00:25:27 字數 956 閱讀 2077

聚集索引和非聚集索引的區別

聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致。

聚集索引

聚集索引表記錄的排列順序和索引的排列順序一致,所以查詢效率快,只要找到第乙個索引值記錄,其餘就連續性的記錄在物理也一樣連續存放。聚集索引對應的缺點就是修改慢,因為為了保證表中記錄的物理和索引順序一致,在記錄插入的時候,會對資料頁重新排序。

非聚集索引

非聚集索引制定了表中記錄的邏輯順序,但是記錄的物理和索引不一定一致,兩種索引都採用b+樹結構,非聚集索引的葉子層並不和實際資料頁相重疊,而採用葉子層包含乙個指向表中的記錄在資料頁中的指標方式。非聚集索引層次多,不會造成資料重排。

————————————————

主鍵和唯一索引的區別

主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。

主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。

唯一性索引列允許空值,而主鍵列不允許為空值。

主鍵列在建立時,已經預設為非空值 + 唯一索引了。

主鍵可以被其他表引用為外來鍵,而唯一索引不能。

乙個表最多只能建立乙個主鍵,但可以建立多個唯一索引。

主鍵和唯一索引都可以有多列。

主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。

在 rbo 模式下,主鍵的執行計畫優先順序要高於唯一索引。 兩者可以提高查詢的速度。

索引是一種特殊的檔案(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。

總體來說:主鍵相當於一本書的頁碼,索引相當於書的目錄。

其實主鍵和索引都是鍵,不過主鍵是邏輯鍵,索引是物理鍵,意思就是主鍵不實際存在,而索引實際存在在資料庫中,主鍵一般都要建,主要是用來避免一張表中有相同的記錄,索引一般可以不建,但如果需要對該錶進行查詢操作,則最好建,這樣可以加快檢索的速度。

mysql建索引原則及索引區別

索引原則 1 最左字首匹配 mysql 會一直向右匹配直到遇到範圍查詢 between,like 就停止匹配。如 a 1 and b 1 and c 3 and d 4 如果建立 a,b,c,d 順序的索引,d是使用不到索引的,如果建立 a,b,d,c 的索引則都可以用到,a b d 可以任意調整順...

Mysql索引介紹及常見索引的區別

mysql索引概念 說說mysql索引,看到乙個很少比如 索引就好比一本書的目錄,它會讓你更快的找到內容,顯然目錄 索引 並不是越多越好,假如這本書1000頁,有500也是目錄,它當然效率低,目錄是要佔紙張的,而索引是要佔磁碟空間的。mysql索引主要有兩種結構 b tree索引和hash索引.ha...

mysql 索引的區別 mysql索引區別

myisam主鍵索引與普通索引的區別 myisam索引檔案和資料檔案是分離的,索引檔案僅儲存資料記錄的位址。myisam的索引與行記錄是分開儲存的,叫做非聚集索引 非 unclustered index 主鍵索引與普通索引沒有本質差異 葉子節點都是儲存對應行記錄的指標。innodb主鍵索引與普通索引...