廢話不多說直接介紹
普通索引
index ---- 普通索引,資料可以重複,沒有任何限制。
唯一索引
unique ---- 唯一索引,要求索引列的值必須唯一,但允許有空值;如果是組合索引,那麼列值的組合必須唯一。
主鍵索引
primary key ---- 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表的同時建立主鍵索引。
組合索引
組合索引 ---- 在多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第乙個字段,索引才會被使用。
全文索引
fulltext ---- 全文索引,是對於大表的文字域:char,varchar,text列才能建立全文索引,主要用於查詢文字中的關鍵字,並不是直接與索引中的值進行比較。fulltext更像是乙個搜尋引擎,配合match against操作使用,而不是一般的where語句加like。
注:全文索引目前只有myisam儲存引擎支援全文索引,innodb引擎5.6以下版本還不支援全文索引
所有儲存引擎對每個表至少支援16個索引,總索引長度至少為256位元組,索引有兩種儲存型別,包括b型樹索引和雜湊索引。
索引可以提高查詢的速度,但是建立和維護索引需要耗費時間,同時也會影響插入的速度,如果需要插入大量的資料時,最好是先刪除索引,插入資料後再建立索引。
索引生效條件
假設index(a,b,c)
• 最左字首匹配:模糊查詢時,使用%匹配時:』a%『會使用索引,』%a『不會使用索引
• 條件中有or,索引不會生效
• a and c,a生效,c不生效
• b and c,都不生效
• a and b > 5 and c,a和b生效,c不生效。
建立索引
#主鍵索引 primary key ---- 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表的同時建立主鍵索引。
create table t_dept(
no int not null primary key,
name varchar(20) null,
*** varchar(2) null,
info varchar(20) null,
index index_no(no)
)#唯一索引unique +主鍵索引 primary :name 為唯一索引值不能有相同
create table t_dept2(
no int not null primary key,
name varchar(20) null,
*** varchar(2) null,
info varchar(20) null,
unique index index_no(name)
)#建立組合索引,將表中多個字段加入組合索引
create table t_dept3(
no int not null primary key,
name varchar(20) null,
*** varchar(2) null,
info varchar(20) null,
key index_no_name(no,name)
)#建立全文索引
create table t_dept3(
no int not null primary key,
name varchar(20) null,
*** varchar(2) null,
info varchar(20) null,
fulltext index index_no(no)
)
mysql 索引有哪些 mysql索引有哪些型別
mysql目前主要有的索引型別為 普通索引 唯一索引 主鍵索引 組合索引 全文索引。下面本篇文章就來給大家介紹一下這些mysql索引,希望對你們有所幫助。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據...
mysql有哪些索引 mysql索引有哪些
mysql索引有 1 主鍵索引,主鍵索引是一種特殊的唯一索引,不允許有空值 2 普通索引或者單列索引 3 多列索引 4 唯一索引或者非唯一索引 5 空間索引。mysql索引有哪些?1 主鍵索引 主鍵索引是一種特殊的唯一索引,不允許有空值 2 普通索引或者單列索引 3 多列索引 復合索引 復合索引指多...
mysql有哪些索引 mysql 有哪些索引
從資料結構角度 2 hash索引 a 僅僅能滿足 in 和 查詢,不能使用範圍查詢b 其檢索效率非常高,索引的檢索可以一次定位,不像b tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所以 hash 索引的查詢效率要遠高於 b tree 索引c 只有memory儲存引擎顯...