MySQL索引簡介

索引

即特定的MySQL字段進(jìn)行一些特定的算法排序,幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)

MySQL數(shù)據(jù)庫支持多種索引類型罐寨,如BTree索引测垛,哈希索引萝究,全文索引等
HASH
通過建立特征值,然后根據(jù)特征值來快速查找
速度更快唇辨,但只能用于 =廊酣、<=>、IN操作符;優(yōu)化器不能用于order by;任何查找操作必須是索引的完整列
BTree
列記錄都是按照順序排列的助泽,可以優(yōu)化用于比較或者范圍查找操作(=, >, >=, <, <=, between, in)啰扛,以及用于group by, order by嚎京,而且對于字符串類型的索引嗡贺,最左前綴字符串也可以充分利用索引,如like ‘a(chǎn)dmin%’會(huì)解釋成 ‘a(chǎn)dmin’ <= key_col < ‘a(chǎn)dmil’

索引類型

index 普通索引

  1. MySQL的基本索引鞍帝,無限制
  2. 對于字符串類型诫睬,可以指定索引前綴長度

unique 唯一索引
唯一值,可以為NULL

** primary key 主鍵索引**
特殊的唯一索引帕涌,不允許有空值 - 一表只能有一個(gè)主鍵

fulltext index 全文索引「作用不大」
全文索引,針對值中的某個(gè)單詞,比如一篇文章中的某個(gè)詞

索引操作

索引創(chuàng)建

# 表創(chuàng)建完之后創(chuàng)建
alter table table_name add index index_name(column, [column1,...])
alter table table_name add unique index_name(column)

# 表創(chuàng)建完之后創(chuàng)建
create table table_name (
    ......
    primary key (id),
    unique key index_name (column),
    key index_name (column)
);

索引刪除

1) drop index index_name on table_name
2) alter table table_name drop index index_name

索引查看

show index from table_name \G;

索引技巧

1 對 where, on, group by, order by 中出現(xiàn)的列使用索引
2 對較小數(shù)據(jù)列使用索引摄凡,可使索引文件更小,同時(shí)內(nèi)存中也可以裝載更多的索引鍵
3 較長字符串使用前綴索引
4 不建立過多索引, 除了增加額外的磁盤空間外,對于DML操作的速度影響很大,因?yàn)槠涿吭鰟h改一次就得更新索引
5 使用組合索引,注意順序
6 維度高的列創(chuàng)建索引
數(shù)據(jù)列中不重復(fù)值出現(xiàn)的個(gè)數(shù)越大, 維度就越高;要為維度高的列創(chuàng)建索引,如性別和年齡,那年齡的維度高于性別蚓曼,性別不適合創(chuàng)建索引亲澡,其維度過低

不走索引的SQL

# 以下SQL不走索引
select * from users where name like '%tom'; # like 'tom%' 走索引
select * from users where age + 1 = 25;  # 索引列參與運(yùn)算
select * from users where left(`create_time`,4) < 1990; # 使用函數(shù),同上
select * from users where aa = 1; # 如果aa定義為字符串纫版,則不走索引
# 當(dāng)name age email都建立了索引床绪,才走索引「查詢中避免使用or」
select * from users where name='xx' or age = 22 or email='email@gmail.com';

索引弊端

雖然索引提高了查詢速度,當(dāng)時(shí)卻增加額外的磁盤空間,但是會(huì)降低DML操作的速度,因?yàn)槠涿吭鰟h改一次就得更新索引

PS: 一般情況下其弊, 查詢操作遠(yuǎn)大與DML操作
在大數(shù)據(jù)導(dǎo)入時(shí),可以先刪除索引,再批量插入數(shù)據(jù),最后再添加索引
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末癞己,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梭伐,更是在濱河造成了極大的恐慌痹雅,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糊识,死亡現(xiàn)場離奇詭異绩社,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赂苗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門愉耙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哑梳,你說我怎么就攤上這事劲阎。” “怎么了鸠真?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵悯仙,是天一觀的道長龄毡。 經(jīng)常有香客問我,道長锡垄,這世上最難降的妖魔是什么沦零? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮货岭,結(jié)果婚禮上路操,老公的妹妹穿的比我還像新娘。我一直安慰自己千贯,他們只是感情好屯仗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搔谴,像睡著了一般魁袜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敦第,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天峰弹,我揣著相機(jī)與錄音,去河邊找鬼芜果。 笑死鞠呈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的右钾。 我是一名探鬼主播蚁吝,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霹粥!你這毒婦竟也來了灭将?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤后控,失蹤者是張志新(化名)和其女友劉穎庙曙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浩淘,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捌朴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了张抄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砂蔽。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖署惯,靈堂內(nèi)的尸體忽然破棺而出左驾,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布诡右,位于F島的核電站安岂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏帆吻。R本人自食惡果不足惜域那,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猜煮。 院中可真熱鬧次员,春花似錦、人聲如沸王带。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辫秧。三九已至束倍,卻和暖如春被丧,著一層夾襖步出監(jiān)牢的瞬間盟戏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工甥桂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柿究,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓黄选,卻偏偏與公主長得像蝇摸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子办陷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容