在日常生活中,我們不免會查詢一些資料,正是因為這些索引才使我們查詢更高效。下面來看一下關於索引具體的內容吧。
索引的資料結構
在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 來檢視具體使用的索引是哪個 由於單個索引過多,使我們能通過索引...