mysql中索引的操作

2021-08-09 06:08:39 字數 3486 閱讀 9729

1 為什麼使用索引

資料庫物件索引其實和書的目錄類似主要是提高從表中檢索的速度。由於資料儲存在資料庫表中,所以索引是建立在資料庫表物件上的,由表中的乙個字段或者多個字段生成的鍵組成,這些鍵儲存在資料結構中(b-樹或雜湊表),通過mysql可以快速有效的查詢與鍵值相關聯的字段。根據索引儲存的型別可以將索引分為b型樹索引(btree)和雜湊索引(hash).

注:inoodb和myisam儲存引擎支援btree索引型別,memory儲存引擎支援hash型別索引,預設為前者索引。

資料庫索引的出現,除了可以提高資料庫管理系統的查詢速度,而且還可以保證欄位的唯一性,從而實現資料庫表的完整性。mysql支援6中索引:普通索引,唯一索引,全文索引 ,單列索引,多列索引,和空間索引。

以下情況適合建立索引:

* 經常被查詢的字段,即在where字句中出現的字段。

* 在分組的字段,即在 group by 字句中出現的字段。

* 存在依賴關係的字表和父表之間的聯合查詢,即主鍵和外來鍵。

* 設定唯一完整性約束的字段。

以下情況不適合建立索引:

* 在查詢中很少被使用的字段。

* 擁有許多重複值的字段。

2 建立和檢視索引(三種方式)

2.1 建立和檢視普通索引(第一種)

語法形式:

create table table_name(

屬性名    資料型別,

屬性名    資料型別,

屬性名    資料型別,

index(key)  【索引名】(屬性1 【長度】 【asc|desc】)

index或者key引數用來指定欄位的索引,「索引名」引數用來指定所建立索引名,「屬性1」引數指定索引所關聯的字元的名稱,「長度」引數指定索引的長度,「asc或desc」引數指定公升序或降序。

例:建立t_dept表。

create table t_dept(

deptno int,

dname varchar(20),

loc varchar(40),

index index_deptno(deptno)

校驗索引是否建立成功

show create table t_dept  \g

2.2 在已經存在的表中建立普通索引(第二種)

語法形式:cretae index 索引名  on  表名 (屬性名 【長度】 【asc|desc】)

例:建立索引

create index index_deptno  on t_dept (deptno);

校驗索引是否建立成功

show create table t_dept  \g

2.3 通過sql語句alter table建立普通索引(第三種)

語法形式:alter table table_name  add index|key  索引名 (屬性  【長度】  asc|desc);

例:執行sql語句:

alter table t_dept add index index_deptno(deptno);

校驗結果:

show create table t_dept  \g

3建立和檢視唯一索引

所謂唯一索引,就是在建立索引時,限制索引的值必須唯一。通過該型別的索引可以更快速的查詢某條記錄,可以分為自動索引和手動索引。

3.1 建立表時建立唯一索引

create table table_name(

屬性名    資料型別,

屬性名    資料型別,

屬性名    資料型別,

unique  index(key)  【索引名】(屬性1 【長度】 【asc|desc】)

例;建立表

create table t_dept(

deptno int unique,

dname varchar(20),

loc varchar(40),

unique  index index_deptno(deptno)

校驗show create table t_dept  \g

3.2在已經存在的表上建立唯一索引

語法形式:create unique  index 索引名  on  表名 (屬性名 【長度】 【asc|desc】)

例:create unique  index index_deptno  on t_dept (deptno);

校驗show create table t_dept  \g

3.3 通過sql語句建立唯一索引

語法形式:alter  table table_name add unique index|key  索引名 (屬性  【長度】  asc|desc);

例:alter table t_dept add  unique index index_deptno(deptno);

校驗show create table t_dept  \g

全文索引主要關聯在資料型別為char varchar text 欄位上,以便能夠快速地查詢資料量較大的字串型別的字段。

mysql從3.23.23版本開始支援全文索引。只能在儲存引擎為myisam的資料庫表建立全文索引,預設情況下全文索引的搜尋方式不區別大小寫,如果為二進位制資料型別,則區分。

4.1建立表時建立全文索引

語法形式:

create table table_name(

屬性名    資料型別,

屬性名    資料型別,

屬性名    資料型別,

fulltext  index(key)  【索引名】(屬性1 【長度】 【asc|desc】)

4.2 在已經存在的表中建立全文索引

語法形式:create fulltext  index 索引名  on  表名 (屬性名 【長度】 【asc|desc】)

4.3通過sql語句建立全文索引

語法形式:alter  table table_name add fulltext index|key  索引名 (屬性  【長度】  asc|desc);

5建立和檢視多列索引

5.1建立表時建立多列索引

語法形式:

create table table_name(

屬性名    資料型別,

屬性名    資料型別,

屬性名    資料型別,

index(key)  【索引名】(屬性1 【長度】 【asc|desc】

屬性名n 【長度】 【asc|desc】)

5.2在已經存在的表中建立多列索引

語法形式:create  index 索引名  on  表名 (屬性名 【長度】 【asc|desc】

屬性名n 【長度】 【asc|desc】

)5.3

通過sql語句建立多列索引

語法形式:alter  table table_name add  index|key  索引名 (屬性名  【長度】  asc|desc

屬性名n 【長度】 【asc|desc】

); 6刪除索引

drop index index_name on table_name;

MySQL中索引的操作

資料庫物件索引由表中的乙個或多個字段生成的鍵組成,即乙個索引會包含表中按一定順序排列的一列或多列字段,這些鍵儲存在資料結構 b tree或hash表 中,通過mysql可以有效地查詢與鍵值相關聯的字段。mysql支援六種索引 普通索引 唯一索引 全文索引 單列索引 多列索引和空間索引。以下分兩種情況...

mysql除錯索引 MySQL索引的操作

索引的概念 資料庫物件索引其實與書的目錄類似,主要是為了提高從表中檢索資料的速度。2 根據索引的儲存型別可以將索引分為b型索引 btree 和雜湊索引 hash 3 mysql所支援的索引 普通索引 唯一索引 全文索引 單列索引 多列索引和空間索引。一 建立和檢視普通索引 1 建立表時建立普通索引 ...

mysql索引的操作

1.索引的分類 普通索引和唯一索引 普通索引 是mysql中基本的索引型別,允許在定義索引的列中插入重複值和空值。唯一索引 索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。主鍵索引是一種特殊的唯一索引,不能為空值。單列索引和組合索引 單列索引即乙個索引只包含單個列,乙個表可以...