讀書筆記 Mysql 索引

2021-06-08 07:48:46 字數 759 閱讀 3652

mysql有不同的儲存引擎型別,儲存引擎使用不同的方式將索引存放在磁碟上。不同的存放方式對效能有不同的影響。myisam按照行儲存的物理位置來尋找資料,innodb按照主鍵值引用行。

mysql 索引的型別

b-tree索引

b-tree索引的適用場景

匹配全名,匹配最左字首,匹配列字首,精確匹配一部分,並且匹配某個範圍值的一部分,只訪問索引的查詢。

hash索引

hash索引建立在hahs表的基礎上,僅對每一列的精確查詢有用。對於每一行,儲存引擎計算出乙個hash code,他是乙個較小的值,並且可能和其他行的hash碼不同,hash碼儲存在索引中,並且儲存了乙個指向hash表中每一行的指標。

hash索引的限制

hash索引只包含了hash碼和行指標,也就意味著不能直接從索引獲得資料;不能使用hash索引進行排序;hash索引不支援部分鍵值匹配;hash索引只支援了=,in(),<=>等運算子。訪問hash索引中的資料非常快,除非碰撞率很高,當發生碰撞時,儲存引擎必須訪問鍊錶中的每一行指標,逐行進行比較,確認正確的資料;如果有很多碰撞,一些索引維護操作就會變慢。

自適應hash索引

當innodb的一些索引值被頻繁訪問時,它就在b-tree的頂端建立為這些值建立記憶體中的索引。這個過程是自動執行的,沒辦法配置。

空間索引

全文索引

字首索引

使用字首索引的好處是節約空間並提高效能,但,使用這類索引時,需要關注索引的選擇性,當選擇的字首長度的選擇性和整列的選擇性接近時,選擇的長度才較好。

MySQL 讀書筆記 索引(1)

普通索引 主鍵索引 唯一索引 聯合索引 create table table name col name data type unique index index name col name asc desc alter table table name add index unique index...

mysql運維 讀書筆記 Mysql 讀書筆記

mysql儲存時間有兩種型別 datetime和timestamp。分別說一下兩者的區別。datetime,以8位元組儲存時間,理論上可以從0000年儲存到9999年。並且沒有時區的概念,它儲存的就是乙個時間點的概念。timestamp和datetime最主要的不同就是,它是以4個位元組儲存,由19...

mysql讀書筆記

鎖 一 表鎖mysql中最基本的鎖策略,是開銷最小的策略。二 表鎖鎖定整張表。使用者在對錶進行寫操作前,需要先獲取寫鎖,阻塞其他使用者對該錶的所有讀寫操作。三 表鎖在沒有寫鎖時,使用者才會獲取讀鎖,讀鎖與寫鎖之間是不相互阻塞的 四 表鎖在特定場景中,表鎖的效能比較良好。五 表鎖寫鎖優先順序要高於讀鎖...