MySQL學習 2 MySQL索引

2021-10-09 09:00:10 字數 2502 閱讀 3220

6、索引設計原則

mysql官方對索引的定義為:索引(index)是幫助mysql高效獲取資料的資料結構(有序)。在資料之外,資料庫系統還維護者滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料, 這樣就可以在這些資料結構上實現高階查詢演算法,這種資料結構就是索引

一般來說索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存在磁碟上。索引是資料庫中用來提高效能的最常用的工具優勢

劣勢 索引是在mysql的儲存引擎層中實現的,而不是在伺服器層實現的。所以每種儲存引擎的索引都不一定完全相同,也不是所有的儲存引擎都支援所有的索引型別的。mysql目前提供了以下4種索引

型別說明

btree 索引

最常見的索引型別,大部分索引都支援 b 樹索引

hash 索引

只有memory引擎支援 , 使用場景簡單

r-tree 索引(空間索引)

空間索引是myisam引擎的乙個特殊索引型別,主要用於地理空間資料型別,通常使用較少,不做特別介紹

full-text (全文索引)

全文索引也是myisam的乙個特殊索引型別,主要用於全文索引,innodb從mysql5.6版本開始支援全文索引 索引

innodb引擎

myisam引擎

memory引擎

btree索引

支援支援

支援hash 索引

不支援不支援

支援r-tree 索引

不支援支援

不支援full-text

5.6版本之後支援

支援不支援

我們平常所說的索引,如果沒有特別指明,都是指b+樹(多路搜尋樹,並不一定是二叉的)結構組織的索引。其中聚集索引、復合索引、字首索引、唯一索引預設都是使用 b+tree 索引,統稱為 索引

型別說明

單值索引

即乙個索引只包含單個列,乙個表可以有多個單列索引

唯一索引

索引列的值必須唯一,但允許有空值

復合索引

即乙個索引包含多個列

索引在建立表的時候,可以同時建立, 也可以隨時增加新的索引,準備測試資料

語法

create

[unique

|fulltext|spatial]

index index_name

[using index_type]

on tbl_name(index_col_name,..

.)

在city表的city_name列建立乙個索引,索引名稱為idx_city_name

create

index idx_city_name on city(city_name)

;新增單值索引

alter

table tb_name add

index index_name(column_list)

;新增唯一索引

alter

table tb_name add

unique index_name(column_list)

;新增全文索引

語法

show

語法

drop

索引的設計可以遵循一些已有的原則,建立索引的時候請盡量考慮符合這些原則,便於提公升索引的使用效率,更高效的使用索引

建立復合索引舉例:

create

index idx_name_email_status on tb_seller(name,email,

status);

就相當於

對name 建立索引 ;

對name , email 建立了索引 ;

對name , email,

status 建立了索引 ;

mysql 索引 二 2 MySQL索引

一 索引介紹 索引是一種資料結構,用於幫助我們在大量資料中快速定位到我們想要查詢的資料。索引在mysql中也叫做 鍵 是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。索引優化應該是對查詢效能優化最有效的手段了。索引能夠...

2 mysql(索引 儲存引擎)

課程大綱 1 在功能上的分類 聚簇索引 建表時,指定了主鍵列,mysql innodb 會將主鍵作為聚簇索引列 如果沒有主鍵,會選擇唯一鍵作為聚集索引。輔助索引 1 單列輔助索引 2 聯合索引 多個列作為索引條件,生成索引樹,理論上設計的好的,可以減少大量的回表查詢 注 聯合索引注意最左原則,inx...

MySQL學習筆記 2 MySQL高階

mysql學習筆記 2 mysql高階 1.mysql資料庫邏輯結構 innodb儲存的邏輯結構包括 表空間 table space 段 segment 區 extent 塊 頁 block page 預設情況下,所有資料都儲存在共享表空間中。如果設定了innodb file per table,每...