十 資料庫 索引index

2022-07-13 17:27:10 字數 2661 閱讀 4419

資料庫中專門用於幫助使用者快速查詢資料的一種資料結構。類似於字典中的目錄,查詢字典內容時可以根據目錄查詢到資料的存放位置嗎,然後直接獲取。

約束和加速查詢

-普通索引

-唯一索引

-主鍵索引

-聯合索引(多列)

-聯合主鍵索引

-聯合唯一索引   

- 聯合普通索引

無索引: 從前往後一條一條查詢

有索引:建立索引的本質,就是建立額外的檔案(某種格式儲存,查詢的時候,先去格外的檔案找,定好位置,然後再去原始表中直接查詢。但是建立索引越多,會對硬碟也是有損耗。

建立索引的目的:

a.額外的檔案儲存特殊的資料結構

b.查詢快,但是插入更新刪除依然慢

c.建立索引之後,必須命中索引才能有效

無索引和有索引的區別以及建立索引的目的

hash索引和btree索引

(1)hash型別的索引:查詢單條快,範圍查詢慢

(2)btree型別的索引:b+樹,層數越多,資料量指數級增長(我們就用它,因為innodb預設支援它)

create index 索引的名字 on 表名(字段)               建立 索引字段
drop index 索引的名字 on 表名                           刪除索引字段
show index from 表名                                        顯示索引字段

create table userinfo(

nid int

notnull auto_increment primary key,

name varchar(32) not

null,

email varchar(64) not

null,

index ix_name(name)

);

create unique index 索引名 on 表名(列名)      建立唯一索引字段
drop index 索引名 on 表名;                    刪除索引表名

create table userinfo(

id int

notnull auto_increment primary key,

name varchar(32) not

null,

email varchar(64) not

null,

unique index ix_name(name)

);

主鍵索引有兩個功能: 加速查詢和唯一約束(不含null)

alter table 表名 add primary key(列名);

alter table 表名 drop primary key;

alter table 表名 modify 列名 int, drop primary key;

create table userinfo(

id int

notnull auto_increment primary key,

name varchar(32) not

null,

email varchar(64) not

null,

unique index ix_name(name)

)orcreate table userinfo(

id int

notnull auto_increment,

name varchar(32) not

null,

email varchar(64) not

null,

primary key(nid),

unique index ix_name(name)

)

組合索引是將n個列組合成乙個索引

其應用場景為:頻繁的同時使用n列來進行查詢,如:where name = '

alex

'and email = '

[email protected]'。

create index 索引名 on 表名(列名1,列名2);

#

覆蓋索引:在索引檔案中直接獲取資料

例如: select name

from userinfo where name = '

alex50000';

#索引合併:把多個單列索引合併成使用

例如: select * from userinfo where name = '

alex13131

'and id = 13131;

oracle資料庫之索引index

什麼是索引 在關係型資料庫中,索引是一種單獨的 物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。索引是為了加速對錶中資料行的檢索而建立的一...

mysql資料庫之索引index

什麼是索引 mysql資料庫索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。在關係型資料庫中,索引是一種單獨的 物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引是為了...

資料庫中的索引Index

索引就像一本書的目錄,而書中的索引是對乙個詞語的列表,其中註明了包含各個詞的頁碼。資料庫中的索引 是某乙個表中一列或者若干列值的集合和相應的只想表中物理標識這些值的資料頁的邏輯指標清單。索引的作用 1 通過建立唯一索引,可以保證資料記錄的唯一性 2 可以大大的加快資料檢索的速度 3 可以加速表與表之...