資料庫mysql索引 資料庫 mysql索引

2021-10-19 16:14:07 字數 2361 閱讀 6789

mysql 索引

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

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

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

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

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

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

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

普通索引

建立索引

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

create index indexname on mytable(username(length));

如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length。

修改表結構(新增索引)

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

建立表的時候直接指定

create table mytable(id int not null,username varchar(16)not null,index [indexname](username(length)));

刪除索引的語法

drop index [indexname]on mytable;

唯一索引

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

建立索引

create unique index indexname on mytable(username(length))

修改表結構

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

建立表的時候直接指定

create table mytable(id int not null,username varchar(16)not null,unique [indexname](username(length)));

使用alter 命令新增和刪除索引

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

alter table tbl_name add primary key (column_list): 該語句新增乙個主鍵,這意味著索引值必須是唯一的,且不能為null。

alter table tbl_name add unique index_name (column_list): 這條語句建立索引的值必須是唯一的(除了null外,null可能會出現多次)。

alter table tbl_name add index index_name (column_list): 新增普通索引,索引值可出現多次。

alter table tbl_name add fulltext index_name (column_list):該語句指定了索引為 fulltext ,用於全文索引。

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

mysql>alter table testalter_tbl add index (c);

你還可以在 alter 命令中使用 drop 子句來刪除索引。嘗試以下例項刪除索引:

mysql>alter table testalter_tbl drop index c;

使用 alter 命令新增和刪除主鍵

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

mysql>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;

刪除主鍵時只需指定primary key,但在刪除索引時,你必須知道索引名。

顯示索引資訊

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

嘗試以下例項:

mysql>show index from table_name;\g

mysql資料庫物件索引 MySQL資料庫索引詳解

一 什麼是索引 索引是乙個排序的列表,在這個列表中儲存著索引值和包含這個值的資料所在行的實體地址,在資料十分龐大的時候,索引可以大大加快查詢速度,這是因為使用索引後可以不用全表掃瞄來定位某行的資料,而是先通過索引表找到該行資料對應的實體地址然後訪問相應的資料。索引通過不斷縮小想要獲取資料的範圍來篩選...

mysql 資料庫 索引 簡明Mysql資料庫索引

什麼是索引?索引是幫助高效獲取資料的資料結構,避免全表掃瞄 mysql為什麼用b tree作索引?而不是其它樹形 結構?比如b樹?盡量少地訪問資源是資料庫設計的重要原則之一。b樹不管葉子節點還是非葉子節點,都會儲存資料,這樣導致在非葉子節 點中能儲存的指標數量變少 有些資料也稱為扇出 指標少的情況下...

mysql資料庫優化索引 mysql資料庫索引調優

一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...