MySQL索引

一、索引的定義

定義:索引(index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),提取句子主干,就可以得到索引的本質(zhì):索引是數(shù)據(jù)結(jié)構(gòu)。

二、索引的分類

在一個(gè)表中,主鍵索引只能有一個(gè),唯一索引可以有多個(gè)

  • 主鍵索引(PRIMARY KEY):唯一標(biāo)識,主鍵不可重復(fù),有且只有一個(gè)。
  • 唯一索引(UNIQUE KEY):避免重復(fù)的列出現(xiàn),唯一索引可以重復(fù),多個(gè)列都可以標(biāo)識為唯一索引。
  • 常規(guī)索引(KEY/INDEX):默認(rèn)的,index,key關(guān)鍵字來設(shè)置
  • 全文索引(FullText):在特定的數(shù)據(jù)庫引擎才有
-- 索引的使用(基礎(chǔ)語法)
-- 1、在創(chuàng)建表的時(shí)候字段增加索引
-- 2、創(chuàng)建完畢后,增加索引

-- 顯示所有的索引信息
SHOW INDEX FROM `shop`

-- 增加一個(gè)索引 索引名(列名)
ALTER TABLE shop.account ADD FULLTEXT INDEX `name`(`name`)

-- EXPLAIN 分析sql執(zhí)行的狀況
EXPLAIN SELECT * FROM student -- 非全文索引
EXPLAIN SELECT * FROM student WHERE MATCH(`studentname`)

-- 索引測試
select *from app_user where `name`='用戶9999';

explain SELECT *FROM app_user WHERE `name`='用戶9999';

-- create index 索引名 on 表(字段)
create index id_app_user_name on app_user(`name`)

索引在大數(shù)據(jù)量的時(shí)候非常有用。

三、索引原則

  • 索引不是越多越好
  • 不要對經(jīng)常變動(dòng)的字段加索引
  • 小數(shù)據(jù)量的表不需要索引
  • 索引一般加在常用的查詢字段上

索引的數(shù)據(jù)結(jié)構(gòu)

Hash類型的索引
Btree:InnoDB的默認(rèn)數(shù)據(jù)結(jié)構(gòu)

閱讀:https://blog.codinglabs.org/articles/theory-of-mysql-index.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容