關於MySQL的索引基礎

2021-10-07 10:53:38 字數 1781 閱讀 9056

在日常生活中,我們不免會查詢一些資料,正是因為這些索引才使我們查詢更高效。下面來看一下關於索引具體的內容吧。

索引的資料結構

在mysql5.58版本之後所使用的預設搜尋引擎由myisam變成了innodb,而innodb索引結構是預設使用b+樹的。

索引有什麼優勢

可以快速檢索,減少 i/o 次數;

根據索引分組和排序,可以加快分組和排序;

了解一下索引有什麼不足

索引本身也是表,因此會占用儲存空間,索引表占用的空間是大概是資料表的 1.5 倍;

在修改資料表的同時還需要修改索引表。

看了關於索引的好和壞,下面我們來看看索引是怎麼使用的

索引的建立

在建立表的時候建立索引

create

table mytable(

id int

notnull

,username varchar(16

)not

null

,index myindex (username(16)

)//mytable是表名,myindex是索引名,username是在username這個列建的索引

);

在建立表之後建立索引(有兩種方式)

create

index myindex on mytable(username(16)

);

alter

table mytable add

index myindex(username)

;

檢視我們所建的索引
show

index

from mytable//檢視mytable這個表中的索引

刪除索引(兩種方式)
drop

index myindex on mytable;

alter

table mytable drop

index myindex;

檢視索引使用的情況
explain

select

*from mytable

了解完索引的使用下面看一下索引的使用規則

適合建立索引的情況

主鍵自動建立唯一索引;

經常作為查詢條件在 where 或者 order by 語句**現的列要建立索引;

作為排序的列要建立索引;

查詢中與其他表關聯的字段,

外來鍵關係建立索引;

高併發條件下傾向組合索引;

用於聚合函式的列可以建立索引

不適合建立索引的情況

經常增刪改的列不要建立索引;

有大量重複的列不建立索引;

表記錄太少不要建立索引。

索引失效的情況

在組合索引中不能有列的值為 null,如果有,那麼這一列對組合索引就是無效的;

在乙個 select 語句中,索引只能使用一次,如果在 where 中使用了,那麼在 order by 中就不要用了;

like 操作中,』%aaa%'不會使用索引,也就是索引會失效,但是『aaa%』可以使用索引;

在索引的列上使用表示式或者函式會使索引失效;

在查詢條件中使用不等於,包括《符號、>符號和!=會導致索引失效;

在查詢條件中使用 is null 或者 is not null 會導致索引失效;

字串不加單引號會導致索引失效;

以上是對索引比較基礎的用法,如有錯誤,隨時指出跟正

關於mysql索引 關於mysql的索引

我們先來了解mysql索引的概念 索引是一種特殊的檔案,他們包含著對資料表裡所有記錄的引用指標。更通俗地說,資料庫索引好比是是一本書前面的目錄,能加快資料庫的查詢速度,我們有了相應的索引後,資料庫會直接在索引中查詢符合條件的選項。索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照資料存放的物理位置為順...

mysql索引基礎 Mysql 索引基礎

什麼是索引?為什麼要建立索引?索引,其實就是目錄。索引,用於快速找出在某個列中有某個特定值的行。不使用索引,mysql必須從第一條記錄開始查詢整張表,直到找出相關的行,那麼表越大,查詢資料所花費的時間就越多。假如表中查詢的列有乙個索引 目錄 mysql能夠快速定位到達乙個位置去搜尋資料檔案,而不必查...

關於MySQL索引

給字段加索引 隨著資料表數量的增加,沒錯查詢的速度逐漸變慢,這是就需要給資料表需要 where 的字段加上索引。分析索引過多帶來的問題 可是隨著索引的字段越來越多,查表的速度也變得越來越慢,這時候就要使用 mysql 的 explain 來檢視具體使用的索引是哪個 由於單個索引過多,使我們能通過索引...