MySql中的索引基礎

2021-10-03 11:14:18 字數 2800 閱讀 4998

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

1、所有列(字段)都可以被索引

2、大大提高查詢速度

1、索引會降低更新表的速度(更新表時mysql不僅需儲存資料還要儲存索引檔案)

2、建立索引會占用磁碟空間

3、資料越大索引維護越耗時

1、對經常更新的表避免建立過多索引,對經常用於查詢的字段應建立索引

2、資料量小盡量不用索引

3、在唯一性強的列上適合建立索引

從邏輯角度

分為四類:單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引

1)單列索引:乙個索引只包含單個列,但乙個表中可以有多個單列索引。

普通索引:mysql中基本索引型別沒有什麼限制,允許在定義索引的列中插入重複值和空值

唯一索引:索引列中的值必須是唯一的,但是允許為空值

主鍵索引:是一種特殊的唯一索引,不允許有空值

2)組合索引

在表中的多個字段組合上建立的索引,只有在查詢條件中使用了這些欄位的左邊欄位時,索引才會被使用,使用組合索引時遵循最左字首集合

3)全文索引

只有在myisam引擎上才能使用,只能在char,text,varchar型別欄位上使用。索引型別為fulltext

允許有重複值和空值,全文索引需要配合match against操作使用。

4)空間索引

對空間資料型別的字段建立的索引,mysql中的

空間資料型別有四種,geometry、polygon、linestring、point。在建立空間索引時,使用spatial關鍵字。

要求:引擎為myisam,建立空間索引的列,必須將其宣告為not null

從物理儲存角度

分為聚集索引和非聚集索引。

1)聚集索引

資料行的物理順序與列值(一般是主鍵的那一列)的邏輯順序相同,乙個表中只能擁有乙個聚集索引。像新華字典的拼音檢索。

2)非聚集索引

索引的邏輯順序與磁碟上行的物理儲存順序不同,乙個表中可以擁有多個非聚集索引。像新華字典的偏旁檢索。

從資料結構角度

1)hash索引

2)b+tree索引

注意:索引是在儲存引擎中實現的,也就是說不同的儲存引擎,會使用不同的索引

建立索引的sql語句:

直接建立索引:

普通索引

create

index index_name

on table_name (

column

(length)

);

唯一索引

create

unique

index index_name

on table_name (

column

(length)

);

修改表結構新增索引:

普通索引

alter

table table_name

addindex index_name on(

column

(length)

);

唯一索引

alter

table table_name

addindex

unique

index index_nameon(

column

(length)

);

組合索引

alter

table table_name

addindex index_name(column1,column2,..

.);

全文索引

alter

table table_name

add fulltext index_name(

column

);

建立表時建立普通索引:

普通索引

create

table table_name(..

....

index index_name(

column

(length)))

;

唯一索引

create

table table_name(..

....

unique

index index_name(

column

(length)))

;

主鍵索引

create

table table_name(..

....

primary

key(

column))

;

刪除索引:

drop

index index_name on table_name;

顯示索引資訊:

show

index

from table_name;\g

新增鏈結描述

新增鏈結描述

新增鏈結描述

mysql索引基礎 Mysql 索引基礎

什麼是索引?為什麼要建立索引?索引,其實就是目錄。索引,用於快速找出在某個列中有某個特定值的行。不使用索引,mysql必須從第一條記錄開始查詢整張表,直到找出相關的行,那麼表越大,查詢資料所花費的時間就越多。假如表中查詢的列有乙個索引 目錄 mysql能夠快速定位到達乙個位置去搜尋資料檔案,而不必查...

MySQL中索引的基礎知識

本文是關於mysql中索引的基礎知識。主要講了索引的意義與原理 建立與刪除的操作。並未涉及到索引的資料結構 高效能策略等。一 概述 1.索引的意義 用於提高資料庫檢索資料的效率,提高資料庫效能。資料庫在檢索資料時,如果沒有索引,則只能從第一條記錄開始逐條查詢,效率很低,新增索引可以明顯提公升效率。2...

mysql索引基礎

1.建立索引 alter table table name add index index name column list alter table table name add unique index name column list alter table table name add pri...