MySQL MySQL中的索引

2021-09-29 17:09:28 字數 1386 閱讀 4153

mysql官方對索引的定義為:

索引(index)是幫助mysql高效獲取資料的資料結構。(索引是資料結構)

排好序的快速查詢資料結構。

即除資料本身之外,資料庫還維護著乙個滿足特定查詢演算法的資料結構,這些資料結構以某種方式指向資料,這樣就可以在這些資料結構的基礎上實現高階查詢演算法,這種資料結構就是索引。

1.單值索引:即乙個索引只包含單個列,乙個表可以有多個單列索引;

2.唯一索引:索引列的值必需唯一,但允許有空值;

3.復合索引:即乙個索引包含多個列;

優勢:

1.類似大學生圖書館建書目索引,提高資料檢索的效率,減低資料庫的io成本

2.通過索引列對資料進行排序,降低資料排序的成本,降低了cpu的消耗。

劣勢:

1.實際上索引也是一張表,該錶儲存了主鍵和索引字段,並指向實體表的記錄,所以索引列也是占用空間的;

2.雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete.更新表不僅要儲存資料,還要儲存索引檔案。每次更新新增了索引列的字段,都會調整因為更新所帶來的鍵值變化後的索引資訊。

1.建立

create [unique] index indexname on table(columnname(length));
alter table add [unique] index[indexname] on (columnname(length));
2.刪除

drop index[indexname] on table;
3.檢視

show index from table;
1.主鍵自動建立唯一索引;

2.頻繁作為查詢條件的字段應該建立索引;

3.查詢中與其它表關聯的字段,外來鍵關係建立索引;

4.頻繁更新的字段不適合建立索引;

5.where條件用不到的字段不建立索引;

6.單值/復合索引,優先考慮建復合索引;

7.查詢中排序的字段;

8.查詢中統計或者分組字段;

1.表記錄太少

2.經常增刪改的表:然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete.更新表不僅要儲存資料,還要儲存索引檔案。

3.資料重複且分布平均的表字段,因此應該只為最經常查詢和最經常排序的資料列建立索引。即某個資料列包含許多重複內容,為它建立索引沒有太大實際效果。

mysql mysql中的索引

2019獨角獸企業重金招聘python工程師標準 普通索引 唯一性索引 unique約束設定唯一索引,主鍵是一種特殊的唯一索引。全文索引 查詢較大資料量時,使用全文索引可以提高查詢速度。單列索引 包括以上三個索引 多列索引 空間索引 create table table name 屬性名 資料型別 ...

Mysql Mysql索引詳解

索引概述 mysql資料庫系統除了儲存資料之外,為了能夠提高對資料的快速訪問,mysql為此設計了索引,mysql索引是一種可以快速提高mysql高效查詢資料的一種資料結構。舉個例子索引就跟我們的書本的目錄一樣,如果一本書沒有目錄,那麼你要找想看的地方,那會是相當費勁的,只能一頁頁去翻,而資料庫的索...

MySql MySql中的儲存引擎 索引 事務

一 儲存引擎 mysql的儲存引擎是mysql底層對於檔案的一種訪問機制。儲存引擎的建立是基於表的。1.myisam 一 儲存引擎 myisam 是 mysql 的預設儲存引擎。myisam 不支援事務 也不支援外來鍵,支援全文索引。資料檔案和索引檔案放置在不同的目錄 非聚集索引 平均分布 i o,...