mysql索引型別總結和使用技巧以及注意事項

2022-09-08 22:57:18 字數 1613 閱讀 1747

1.mysql索引型別包括:

一、普通索引

這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:create index indexname on mytable(username(length));如果是char,varchar型別,length可以小於字段實際長度;如果是blob和text型別,必須指定 length,下同。

二、唯一索引

三、主鍵索引

四、組合索引

五、建立索引的時機

到這裡我們已經學會了建立索引,那麼我們需要在什麼情況下建立索引呢?一般來說,在where和join**現的列需要建立索引,但也不完全如此,因為mysql只對<,<=,=,>,>=,between,in,以及某些時候的like才會使用索引。例如:

複製** **如下:

select t.name  from mytable t left join mytable m    on t.name=m.username where m.age=20 and m.city='鄭州'

此時就需要對city和age建立索引,由於mytable表的userame也出現在了join子句中,也有對它建立索引的必要。

剛才提到只有某些時候的like才需建立索引。因為在以萬用字元%和_開頭作查詢時,mysql不會使用索引。例如下句會使用索引:

六、索引的不足之處

上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:

1.雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。

2.建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在乙個大表上建立了多種組合索引,索引檔案的會膨脹很快。

索引只是提高效率的乙個因素,如果你的mysql有大資料量的表,就需要花時間研究建立最優秀的索引,或優化查詢語句。

七、使用索引的注意事項

1.索引不會包含有null值的列

只要列中包含有null值都將不會被包含在索引中,復合索引中只要有一列含有null值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為null。

2.使用短索引

對串列進行索引,如果可能應該指定乙個字首長度。例如,如果有乙個char(255)的列,如果在前10個或20個字元內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作。

3.索引列排序

mysql查詢只使用乙個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。

4.like語句操作

一般情況下不鼓勵使用like操作,如果非使用不可,如何使用也是乙個問題。like 「%aaa%」 不會使用索引而like 「aaa%」可以使用索引。

5.不要在列上進行運算

MySQL索引型別總結和使用技巧以及注意事項

在資料庫表中,對欄位建立索引可以大大提高查詢速度。假如我們建立了乙個 mytable表 複製 www.cppcns.com如下 create table mytable id int not null,username varchar 16 not null 我們隨機向裡面插入了10000條記錄,其...

Mysql基本使用原理和索引型別

1.建立使用者 建立使用者的三種方法 1 insert into mysql.user host,user,password values localhost hadoop password hadoop 2 create user hadoop localhost identified by ha...

mysql索引型別和索引方法以及使用注意事項

一 索引型別 mysql索引型別normal,unique,full text的區別是什麼?normal 表示普通索引 unique 表示唯一的,不允許重複的索引,如果該欄位資訊保證不會重複例如身份證號用作索引時,可設定為unique full text 表示 全文搜尋的索引。fulltext 用於...