資料庫 索引

2021-09-26 11:09:12 字數 2522 閱讀 7657

索引:提高海量資料的檢索速度。

索引的分類:

新建乙個表:

字段資料型別

idint

name

varchar(20)

假設表中有 10000 個記錄,id 從 1-10000。

沒有建立索引,需要從頭到尾遍歷記錄直到找到你所要查詢的資料,若你要查詢的 name 的 id 為10000,那麼按照 id 查詢你就需要查詢 10000 次。時間複雜度為o(n)

如果對這個「id」建立了索引,即從小到大進行了排序之後我們就可以採用二叉樹的形式進行查詢。那麼我們只需要log210000次。時間複雜度為log2n

無索引是線性查詢,有索引的查詢是二叉樹查詢

特點:

乙個表中,最多有乙個主鍵索引

主鍵索引效率高

建立主鍵索引的嘞,它的值不能為空 (null),且不能重複

主鍵索引的列基本上是 int 型別

主鍵索引可以做外來鍵

建立:

在建立表的時候,直接在欄位名後指定主鍵索引,primary key

create

table user1(id int

primary

key, name varchar(20));

在建立表的最後,指定某列或幾列為主鍵索引

create

table user2(id int

, name varchar(20

),primary

key(id)

);

建立表之後再建立主鍵

create

table user3(id int

, name varchar(20

));alter

table user3 add

primary

key(id)

;

特點:乙個表中可以有多個唯一索引

查詢效率高

如果再某一列建立唯一索引,必須保證這列不能有重複資料

如果乙個唯一索引上指定 not null,等價於主鍵索引

建立:

在建立表的時候,直接在某列後指定 unique 唯一屬性

create

table user1(id int

primary

key, name varchar(20

)unique

);

在建立表的最後,指定某列或幾列為主鍵索引

create

table user2(id int

primary

key, name varchar(20

),unique

(name)

);

建立表之後再建立主鍵

create

table user3(id int

primary

key, name varchar(20

));alter

table user3 add

unique

(name)

;

特點:乙個表中可以有多個普通索引

如果某列需要建立索引,但是該列有重複的值,那麼我們就應該使用普通索引

建立:

在建立表的時候,直接在某列後指定為普通索引

create

table user1(id int

primary

key, name varchar(20

),index

(name)

;

在建立表的最後,指定某列為普通索引

create

table user2(id int

primary

key, name varchar(20

));create

index idx_name on user2(name)

;

建立表之後,建立乙個索引名為 idx_name 的索引

create

table user3(id int

primary

key, name varchar(20

));create

index idx_name on user3(name)

;

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...