1. 程式人生 > 其它 >MySQL學習筆記(十)-MySQL索引

MySQL學習筆記(十)-MySQL索引

技術標籤:學習筆記mysql

MySQL學習筆記-MySQL索引

作者:就叫易易好了
日期:2020/12/08

什麼是索引?

索引(index)是幫助MySQL高效獲取資料的資料結構,可以得到索引的本質。

好處:提高查詢效率

索引需要維護,維護索引需要耗費時間,所以索引並不是越多越好。

假如,如果我們需要查詢‘mysql’,首先要定位到m字母,然後再找到剩下的sql。

可以理解為排好序的快速查詢資料結構

索引的優勢:

  • 類似大學圖書館建書的索引提高資料檢索的效率,降低資料庫的IO成本
  • 通過索引列對資料進行排序,降低排序成本,降低CPU的消耗。

索引的劣勢:

  • 索引雖然大大提高了查詢速度,同時卻會降低更新表的速度,比如對錶格進行INSERT,UPDATE或者DELETE,因為更新表時,MySQL不僅要儲存資料,還要儲存一下索引檔案每次更新新增的索引列的欄位。

索引分類:

  • 單值索引:一個索引只包含單個列,一個表可以有多個單列索引
  • 唯一索引:索引列的值必須唯一,但允許有空值。
  • 複合索引:一個索引包含了多個列

當在表中建立了primary key約束或unique約束時,MySQL會自動地建立一個唯一索引。

基本語法:

建立:

1、CEATE INDEX 索引名 ON 表名
2、ALTER 表名 ADD INDEX(索引名) ON ……

刪除:

DROP INDEX(索引名) ON 表名

檢視:

SHOW INDEX FROM 表名

案例:

建立一個普通索引:

CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
index(bkYear)   -- 在bkYear上建立一個普通索引
);

檢視索引:

show index from BOOKS;

通過以下語句可以檢視建表時的命令:

show create table BOOKS;

建立一個唯一索引:

DROP table if exists BOOKS;
CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
unique index(bkYear)   -- 在bkYear上建立一個唯一索引
);

建立一個複合索引:

DROP table if exists BOOKS;
CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
index compositeIndex(bkID,bkName,bkAuthor)-- 組合索引
);