MySQL入門 7(索引特性)

2021-09-13 00:15:37 字數 3228 閱讀 4694

索引使用場景:

1.資料量較大,且經常對這些列進行條件查詢。

2.該資料庫表的插入操作,及對這些列的修改操作頻率較低。

3.索引會占用額外的磁碟空間。

滿足以上條件時,考慮對錶中的這些字段建立索引,以提高查詢效率。

反之,如果非條件查詢列,或經常做插入、修改操作,或磁碟空間不足時,不考慮建立索引。

索引作用:

1.資料庫中的表、資料、索引之間的關係,類似於書架上的圖書、書籍內容和書籍目錄的關係。

2.索引所起的作用類似書籍目錄,可用於快速定位、檢索資料。

3.索引對於提高資料庫的效能有很大幫助。

索引的說明:占用磁碟空間,當新增一條記錄,除了新增到表中,還要維護二叉樹,速度有影響,但不大。當我們新增乙個索引,不能夠解決所有查詢問題,需要分別給字段建立索引;索引是以空間換時間

主鍵索引

(1)在建立表的時候加create table test (id int ,name varchar(20) primary key);

(2)在建立表的最後加復合索引或者是單列索引create table test (id int ,name varchar(20) ,primary key(id,name));

(2)表建立好之後加主鍵alter table test add primary key (name);

主鍵索引的特點

(1)乙個表中,最多有乙個主鍵索引,當然可以使符合主鍵

(2)主鍵索引的效率高(主鍵不可重複)

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

(4)主鍵索引的列基本上是int

唯一鍵索引

唯一鍵的建立和主鍵的建立一樣只是把primary key 變為 unique

唯一索引的特點

(1)乙個表中,可以有多個唯一索引

(2)查詢效率高

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

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

普通索引

(1)在表的定義最後,指定某列為索引,和上面的第二種方法類似index(name);

(2)建立完表以後指定某列為普通索引alter table user9 add index(name);

(3)建立乙個名為tt的索引create index tt on test(name) ;

普通索引的特點

(1)乙個表中可以有多個普通索引,普通索引在實際開發中用的比較多

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

全文索引

create table articles (

id int unsigned auto_increment not null primary key,

title varchar(200),

body text,

fulltext (title,body)

)engine=myisam;

mysql提供全文索引機制,但是要求表的儲存引擎必須是myisamengine =myisam;,而且預設的全文索引支援英文,不支援中文。

全文索引的建立:在建立表的最後加fulltext (欄位名),可以有多個

用explain工具檢視是否用到全文索引explain select * from articles where body like 'a'\ g,key=null表示未用到。

全文索引的使用:select * from articles -> where match (title,body) against ('a')再用explain工具檢視:explain select * from articles where match (title,body) against ('a')\g

(1)show keys from 表名 \gshow keys from 表名

(2)show index from 表名\g;show index from 表名;

(3)desc 表名這種方法比較簡單能夠看到所有資訊

(1)alter table 表名 drop primary key;

(2)alter table 表名 drop index 索引名;

(3)drop index 索引名 on 表名

主鍵:不能重複、不能為空、一張表中最多只能有乙個、所在的列通常為整數型別

(1)在建立表的時候,在所有字段之後就可以指定主鍵id int unsigned default 0 primary key comment'學號';

(2)也可以使用復合主鍵在表的最後加primary key(id,name)

(3)表建立好之後追加主鍵:alter table test add primary key(字段列表)

(4)刪除主鍵:alter table test drop primary key;

唯一鍵:不能重複、可以為空、而且可以多個為空

外來鍵:用於定義主表和從表之間的關係:外來鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。當定義外來鍵後,要求外來鍵列資料必須在主表的主鍵列存在或為null。foreign key (從表的欄位名) references 主表(列),插入資料的時候先給主表插入,再給外表插入否則外表找不到該元素

自增長:auto_increment:當對應的字段,不給值,會自動的被系統觸發,系統會從當前欄位中已經有的最大值+1操作, 得到乙個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。

自增長的特點:

mysql> create table tt21(   

-> id int unsigned primary key auto_increment,

-> name varchar(10) not null default '' );

MySQL索引入門

索引就相當於表的目錄一樣,可以提高我們查詢資料的效率,是一種資料結構。常見的mysql主要有兩種結構 hash索引和b 樹索引。使用哪種資料結構跟儲存引擎有關,innodb引擎預設使用的是b 樹。補充 b 樹索引和雜湊索引的區別?什麼場景不適合使用索引 2 對於那些只有很少資料值的列不適合建立索引 ...

MySQL索引入門

索引於mysql資料庫,就像是目錄於書籍,讀者可以通過目錄可以快速定位到自己想要的內容。同時,索引基本是對mysql進行查詢效能優化最有效的手段。因為mysql的索引是在引擎層而不是伺服器層實現的,所以不同儲存引擎的索引的種類和工作方式是不同的,即便看起來相同,底層實現邏輯也可能大相徑庭。b tre...

索引體積 MySQL入門之索引

索引 1 什麼是索引 索引是一種快速查詢表中內容的機制,使用索引可以提高查詢效率,相當於字典的目錄 可以將查詢過程中經常使用的條件設為索引 2 mysql中索引的型別 1 普通索引 這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立 建立索引,例如create ind...