MySQL 索引介紹!

2021-09-12 05:35:04 字數 2703 閱讀 5024

mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。

打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。

索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引,即乙個索引包含多個列。

建立索引時,你需要確保該索引是應用在 sql 查詢語句的條件(一般作為 where 子句的條件)。

實際上,索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。

上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。

建立索引會占用磁碟空間的索引檔案。

這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:

create index indexname on mytable(username(length));(username(length));
如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length。

alter table tablename add index indexname(columnname)(columnname)
create table mytable(  

id int not null,

username varchar(16) not null,

index [indexname] (username(length))

);(

id int not null,

username varchar(16) not null,

index [indexname] (username(length))

);

drop index [indexname] on mytable;[indexname] on mytable;
它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:

create unique index indexname on mytable(username(length))(username(length))
alter table mytable add unique [indexname] (username(length))[indexname] (username(length))
create table mytable(  

id int not null,

username varchar(16) not null,

unique [indexname] (username(length))

);(

id int not null,

username varchar(16) not null,

unique [indexname] (username(length))

);

有四種方式來新增資料表的索引:

以下例項為在表中新增索引。

mysql> alter table testalter_tbl add index (c);> alter table testalter_tbl add index (c);
你還可以在 alter 命令中使用 drop 子句來刪除索引。嘗試以下例項刪除索引:

mysql> alter table testalter_tbl drop index c;> alter table testalter_tbl drop index c;
主鍵只能作用於乙個列上,新增主鍵索引時,你需要確保該主鍵預設不為空(not null)。例項如下:

mysql> alter table testalter_tbl modify i int not null;

mysql> alter table testalter_tbl add primary key (i);> alter table testalter_tbl modify i int not null;

mysql> alter table testalter_tbl add primary key (i);

你也可以使用 alter 命令刪除主鍵:

mysql> alter table testalter_tbl drop primary key;> alter table testalter_tbl drop primary key;
刪除主鍵時只需指定primary key,但在刪除索引時,你必須知道索引名。

你可以使用 show index 命令來列出表中的相關的索引資訊。可以通過新增 \g 來格式化輸出資訊。

嘗試以下例項:

mysql> show index from table_name; \g> show index from table_name; \g

MySQL索引介紹

索引由資料庫表中一列或者多列組合而成,其作用是提高對錶中資料的查詢速度。建立索引是指在某個表的一列或者多列上建立乙個索引,用來提高對錶的訪問速度,建立索引由三種方法 在建立表的時候建立,在已存在的表上建立和用alter table語句建立。建立索引的基本語法格式 asc引數表示公升序排列,desc引...

MySQL索引介紹

簡單理解為 排好序的快速查詢資料結構 一般來說索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存在磁碟上。我們平常所說的索引,如果沒有特別指明,一般都是指b樹結構組織的索引 b 樹索引 b 樹索引檢索原理 1 類似圖書館書目索引,提高資料檢索的效率,降低資料庫的io成本。2 ...

Mysql索引介紹

索引是在建立表的時候會自動生成乙個主鍵 以主鍵生成的 索引,所以我們可以直接搜尋索引 我們也可以建立 普通索引 create index t job index on e user t job 建立索引名 被建立的表 建立的列名 格式 所以索引可以多個.刪除普通索引 drop index t job...