MySQL 基礎篇 之索引

2021-06-21 13:35:37 字數 2160 閱讀 2513



一:索引的引入

索引定義

:索引是由資料庫表中一列或者多列組合而成,其作用是提高對錶中資料的查詢速度。

類似於圖書的目錄,方便快速定位,尋找指定的內容,如一本1000頁的書,如果沒有目錄,你想要知道指定的內容,必須要1頁1頁翻過去,是不是很浪費時間?

二:索引的優缺點

優點:提高查詢資料的速度。

缺點:建立和維護索引的時間增加了。

三: 索引實際應用

mysql>select count(*) from t_teacher;

mysql>select * from t_teacher where name=』老師99999』; #我這的速度是79毫秒,這邊用name不能用id,因為id是主鍵

mysql>create index `index_name` on `t_teacher`(`name`);#在name列上建立索引

mysql>select * from t_teacher where name=』老師99999』;#再次查詢,速度幾乎是0毫秒,可見加了索引的速度是多麼的快.

四:索引分類

1: 普通索引(常用)

這類索引可以建立在任何資料型別中。

2: 唯一性索引(常用)

使用unique 引數可以設定,在建立唯一性索引時,限制該索引的值必須是唯一的,主鍵預設就是唯一的。

3: 全文索引

使用fulltext 引數可以設定,全文索引只能建立在char,varchar,text 型別的字段上。主要作用就是提高查詢較大字串型別的速度;只有myisam 引擎支援該索引,mysql 預設引擎不支援。

4: 單列索引

在表中可以給單個字段建立索引,單列索引可以是普通索引,也可以是唯一性索引,還可以是全文索引。

5: 多列索引

多列索引是在表的多個欄位上建立乙個索引。

6: 空間索引

使用spatial 引數可以設定空間索引。空間索引只能建立在空間資料型別上,這樣可以提高系統獲取空間資料的效率;只有myisam 引擎支援該索引,mysql 預設引擎不支援。

五:建立索引

5.1 建立表的時候建立索引

create table 表名(屬性名資料型別[完整性約束條件],

屬性名資料型別[完整性約束條件],

....

屬性名資料型別

[unique | fulltext | spatial ] index| key

[別名] (屬性名1 [(長度)] [asc | desc])

這邊沒有指定索引的名字,使用mysql預設的索引名

5.2 在已經存在的表上建立索引

create [ unique | fulltext | spatial ] index 索引名

on 表名(屬性名[(長度)] [ asc | desc]);

5.3 用alter table 語句來建立索引

alter table 表名add [ unique | fulltext | spatial ] index

索引名(屬性名[(長度)] [ asc | desc]);

mysql>alter table `t_test2`

add unique index `index_password`(`password`);

六: 刪除索引

drop index 索引名on 表名;

七: 總結

Mysql系列之索引篇

為了提高資料庫的查詢效率,然後我們會給一些字段增加索引,但是大家有沒有考慮過,索引是什麼?我們為什麼要用索引?增加了索引就一定快嗎?如何實現按照索引查詢呢?索引的資料結構有哪些呢?它分為哪幾類呢?大家別懵,下面就深入去探個究竟吧!索引是為了加快對錶中資料行的檢索而建立的一種分散儲存的資料結構 通俗來...

mysql 優化之索引篇(一)

一 索引的優點 a.索引可以加快查詢速度 b.索引是最有效的查詢優化條件 c.使用索引可以不用全表掃瞄 二 索引的缺點 a.降低了寫入的速度 insert update 寫入時不僅要求寫入到資料行,還要更新全部索引 索引的建立原則 a.盡量為用來搜尋 分類或分組的資料列編制索引,不要為輸出顯示的列編...

mysql 索引 簡書 MySQL 基礎之索引

mysql 索引 索引索引用於快速查詢具有特定列值的行。如果沒有索引,mysql必須從第一行開始,然後讀取整個表以查詢相關行。表越大,成本越高。如果表中有相關 列的索引,mysql可以快速確定要在資料檔案中間尋找的位置,而無需檢視所有資料。這比按順序讀取每一行要快得多。類似於字典中的目錄,查詢字典內...