MySQL中的各類索引

2021-10-01 01:59:39 字數 810 閱讀 1673

在mysql中,innodb引擎的索引儲存是聚簇索引,myisam引擎的索引儲存是非聚簇索引。

聚簇索引:將資料和索引放在一起,查詢通過聚簇索引可以直接獲取資料,相比非聚簇索引需要第二次查詢(非覆蓋索引的情況下)效率要高。聚簇索引對於範圍查詢的效率很高,因為其資料是按照大小排列的。

非聚簇索引:又叫二級索引。二級索引的葉子節點中儲存的不是指向行的物理指標,而是行的主鍵值。當通過二級索引查詢行,儲存引擎需要在二級索引中找到相應的葉子節點,獲得行的主鍵值,然後使用主鍵去聚簇索引中查詢資料行,這需要兩次b-tree查詢

注:在實現mysql的讀寫分離時,通常使用innodb引擎來寫資料庫(主),使用myisam引擎來讀資料庫(從)。

在mysql裡常用的索引資料結構有b+樹索引和雜湊索引兩種,在mysql文件裡,實際上是把b+樹索引寫成了btree,mysql所用的索引是b+樹索引

兩者區別:

1.hash是比btree快,但是hash只能進行等值查詢=,<=>,hash索引不可以進行範圍查詢。btree索引可以進行範圍查詢。

2.資料量大的時候反而btree較快。

3.在有大量重複鍵值情況下,雜湊索引的效率也是極低的,因為存在所謂的雜湊碰撞問題,兩個物件計算出來的hash值有可能是相同的,不穩定。

4.雜湊索引也沒辦法利用索引完成排序,以及like 『***%』 這樣的部分模糊查詢(這種部分模糊查詢,其實本質上也是範圍查詢)。

5.雜湊索引也不支援多列聯合索引的最左匹配規則。

MySQL索引,MySQL中索引的限制?

mysql中索引的限制 1 myisam儲存引擎引鍵的長度綜合不能超過1000位元組 2 blob和text型別的列只能建立字首索引 3 mysql目前不支援函式索引 4 使用!或者 的時候mysql不能使用索引 5 過濾字段使用了函式運算的時候如 abs key sum key 的時候mysql無...

mysql中的索引

mysql中的索引 什麼是索引?索引是對資料庫中某乙個表的資料進行排序,這種排序並不是真正的對錶中資料按照大小排序,而是另外再建立乙個索引檔案來存放包含btree資料結構,在資料結構中根據索引欄位的值排序,資料結構的值包括 索引欄位的值和索引對應資料行的位址。索引查詢就是先查詢這個索引檔案來獲得資料...

MySql中的索引

索引就是資料庫內部對某個表的所有資料預先進行的某種排序,以便於後面的快速查詢。作用 可以極大的加快資料的查詢速度 通常所謂的建立索引,就是指定乙個表的某個或某些字段作為 索引資料字段 就可以了,形式為 索引型別 要建立的索引的欄位名 create table if notexists 表名 欄位1,...