mysql優化之索引操作

2021-06-09 05:20:08 字數 1680 閱讀 8393

索引是加快對資料表內容的訪問速度的基本手段,在有很多個表進行聯接查詢時,這種手段所帶來的效果更加的明顯,這裡介紹索引的特性以及建立和刪除索引的語法。

mysql提供了多種靈活的索引建立辦法,如下所示:

可以為單個資料列編制索引,也可以為多個資料列構造復合索引。

索引可以只包含獨一無二的值,也可以包含重複的值。

可以為同乙個資料表建立多個索引,並且 用於不同的資料列查詢。

可以為資料列建立乙個字首索引。

這是很顯然的,索引本身也是乙個檔案,也以一定的格式儲存。索引具有很多的特性,但不是所有的儲存引擎都對所有的特性進行支援。

mysql可以建立以下索引

唯一索引。這種索引不允許索引項本身出現重複的值,對涉及多個資料列的索引(復合索引)來說,這意味著那幾個資料列的值的組合在整個資料表的範圍內不能重複出現。語句如下

alter table tbl_name add primary key (index_columns);   

因為任何資料表只有乙個primary key

alter table tbl_name add unique index_name(index_columns);

create unique index index_name on tbl_name (index_columns) ;

每個資料表只能有乙個primary key,並且該索引不能包含null值,但unique可以包含,並且可以包含多個null值,這是因為mysql無法判斷兩個null值是否代表同樣的東西,索引裡的多個null值被認為代表多個不同的東西。

普通(非唯一索引)。這種索引的優點是允許索引值重複。

alter table tbl_name add index index_name (index_columns);

create index index_name on tbl_name(index_columns);

fulltext索引。用來進行全文檢索,這種索引只適用於myisam資料表。

alter table tbl_name add fulltext index_name (index_columns);

create fulltext index index_name on tbl_name (index_columns);

spatial索引。這種索引只適用於myisam資料表和空間(spatial)資料型別。

alter table tbl_name add spatial index_name (index_columns);

create spatial index index_name on tbl_name (index_columns);

hash索引。這是memory資料表的預設索引型別,但可以改用btree索引來代替這個預設索引。

index using btree (id);

刪除索引的操作可以用drop index 或 alter table語句來完成。如

drop index index_name on tbl_name ;

如果想要刪除乙個primary key 索引,必須使用引號標識形式給出索引,

drop index `primary` on tbl_name;

alter table tbl_name  drop index index_name

alter table tbl_name drop primary key;

MySQL優化 之 索引

四種索引 主鍵索引,唯一索引,普通索引,全文索引 對查詢語句會提高效率 對增刪改語句會降低效率,因為還要對索引進行增刪改!建立索引會佔磁碟空間 對頻繁查詢的字段應建立索引,對頻繁更新的字段不適合建立索引 1 新增 1.1 主鍵索引新增 1.當一張表,把某個列設為主鍵的時候,則該列就是主鍵索引 cre...

Mysql優化之索引

索引其實就是乙個檔案,它與mysql資料檔案不一樣的地方是 它是順序的儲存資料,檔案小且儲存的位置也不一樣 索引能加快檢索,但系統每一次維護資料 寫入 更新 的同時也需要維護索引,帶來額外的開銷。索引按照底層實現方式分為 b樹索引 r樹索引 雜湊索引等 索引按照具體表現分為 主鍵索引 primary...

效能優化之mysql索引優化

sql及索引優化 如何通過慢查詢日誌發現有問題的sql?查詢次數多且每次查詢占用時間長的sql 通常為pt query digest分析的前幾個查詢 io大的sql 注意pt query digest分析中的rows examine項 未命中索引的sql 注意pt query digest分析中ro...