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中基本的索引型別,允許在定義索引的列中插入重複值和空值。唯一索引 索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。主鍵索引是一種特殊的唯一索引,不能為空值。單列索引和組合索引 單列索引即乙個索引只包含單個列,乙個表可以...