索引使用場景:
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 表名 \g
show 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...