mysql索引

mysql支持的索引

索引是在存儲(chǔ)引擎層實(shí)現(xiàn)逗嫡。而不是在mysql內(nèi)實(shí)現(xiàn)

  • B-tree索引

index 普通索引 沒(méi)有限制
primary 主鍵索引 必須唯一救鲤,且不能為空
unique key 唯一索引 必須唯一
index 前綴索引
當(dāng)索引的字段長(zhǎng)度很大弄抬,則使用前綴索引,使用更少的空間奈嘿,并綜合索引的選擇性暮胧,達(dá)到平衡。

//如下面该押。根據(jù)字段列的長(zhǎng)度疗杉,進(jìn)行統(tǒng)計(jì)
select count(*) as cnt,left(city,7) as pref from city group by pref order by cnt desc limit 10
//計(jì)算索引選擇性
select count(distinct left(city,7))/count(*) from city
//添加索引
alter table tablename add key (keyname(length))
alter table country add key(country(3))

B-tree索引

特點(diǎn)

  1. B-tree 索引是以B+樹(shù)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)
  2. B-tree 索引能夠加快數(shù)據(jù)的查詢速度
  3. B-tree索引適合進(jìn)行范圍查找 索引是順序存儲(chǔ)的

在什么情況下使用到了b-tree索引

  • 全值匹配的查詢
  • 匹配最左前綴的查詢
  • 匹配列前綴查詢
  • 匹配范圍值查找
  • 精確匹配左前列并范圍匹配另外一列
  • 只訪問(wèn)索引的查詢

B-tree索引的限制

  • 如果不是按照最左列開(kāi)始查找,則無(wú)法使用索引
  • 使用索引時(shí)不能跳過(guò)索引中的列
  • not in 和<> 操作無(wú)法使用索引
  • 如果查詢中有某個(gè)列的范圍查詢蚕礼,則其右邊所有的列都無(wú)法使用索引

Hash 索引

特點(diǎn)

  • 基于hash表實(shí)現(xiàn)的烟具,只有查詢條件精確匹配hash索引中所有列才能使用到hash索引
  • 對(duì)于hash索引中的所有列,存儲(chǔ)引擎都會(huì)為每一行計(jì)算一個(gè)hash碼奠蹬,hash索引中存儲(chǔ)的就是hash碼

限制

  • hash索引必須進(jìn)行二次查詢
  • hash索引無(wú)法用于排序
  • hash索引無(wú)法用于范圍查找也不支持部分索引查找
  • hash索引中hash碼的計(jì)算可能存在hash沖突

使用索引的好處

  • 索引可以減少存儲(chǔ)引擎需要掃描數(shù)據(jù)量
  • 索引可以幫助排序朝聋,避免使用臨時(shí)表
  • 索引可以把隨機(jī)io變?yōu)轫樞騣o

索引會(huì)增加寫(xiě)操作的成本
過(guò)多的索引會(huì)增加查詢優(yōu)化器的選擇時(shí)間


索引的優(yōu)化策略

索引列上不能使用表達(dá)式或者函數(shù)

前綴索引和索引列的選擇性

聯(lián)合索引

列的順序選擇

  • 經(jīng)常被使用的列優(yōu)先
  • 列的選擇性高的優(yōu)先
  • 寬度小的列優(yōu)先

覆蓋索引

在btree索引上直接獲得查詢中所需數(shù)據(jù)

  • 可以優(yōu)化緩存,減少磁盤(pán)io操作
  • 可以減少隨機(jī)io囤躁,變隨機(jī)io為順序io
  • 可以避免對(duì)innodb主鍵索引的二次查詢
  • 可以避免myisam表進(jìn)行系統(tǒng)調(diào)用

無(wú)法使用覆蓋索引

  • 存儲(chǔ)引擎不支持覆蓋索引
  • 查詢中使用了太多的列
  • 使用了雙%的like查詢 雙%無(wú)法使用索引

聚簇索引

聚簇索引是一種數(shù)據(jù)的存儲(chǔ)方式冀痕。聚簇表示數(shù)據(jù)行和相鄰的鍵值緊湊地存儲(chǔ)在一起。innodb是通過(guò)主鍵聚集數(shù)據(jù)

優(yōu)點(diǎn)

  • 可以把相關(guān)的數(shù)據(jù)保存在一起
  • 數(shù)據(jù)訪問(wèn)更快
  • 使用索引覆蓋掃描查詢時(shí)狸演,可以直接使用頁(yè)節(jié)點(diǎn)中的主鍵值

缺點(diǎn)

  • 聚簇索引最大限度地提升了io密集型的性能言蛇,但是如果數(shù)據(jù)都放入內(nèi)存,則訪問(wèn)的順序并沒(méi)有那么重要
  • 插入的速度嚴(yán)重依賴于插入的順序
  • 更新的代價(jià)很高宵距,會(huì)強(qiáng)制innodb把被更新的行移動(dòng)到新位置
  • 基于聚簇索引的表猜极,在插入新行,或者主鍵被更新導(dǎo)致需要移動(dòng)行時(shí)消玄,可能會(huì)導(dǎo)致頁(yè)分裂
  • 聚簇索引可能導(dǎo)致全表掃描變慢
  • 二級(jí)索引會(huì)比想象的大跟伏,因?yàn)樵诙?jí)索引中含有主鍵
  • 二級(jí)索引需要兩次訪問(wèn),而不是一次
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翩瓜,一起剝皮案震驚了整個(gè)濱河市受扳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兔跌,老刑警劉巖勘高,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡华望,警方通過(guò)查閱死者的電腦和手機(jī)蕊蝗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赖舟,“玉大人蓬戚,你說(shuō)我怎么就攤上這事”鲎ィ” “怎么了子漩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)石洗。 經(jīng)常有香客問(wèn)我幢泼,道長(zhǎng),這世上最難降的妖魔是什么讲衫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任缕棵,我火速辦了婚禮,結(jié)果婚禮上涉兽,老公的妹妹穿的比我還像新娘挥吵。我一直安慰自己,他們只是感情好花椭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布忽匈。 她就那樣靜靜地躺著,像睡著了一般矿辽。 火紅的嫁衣襯著肌膚如雪丹允。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天袋倔,我揣著相機(jī)與錄音雕蔽,去河邊找鬼。 笑死宾娜,一個(gè)胖子當(dāng)著我的面吹牛批狐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播前塔,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嚣艇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了华弓?” 一聲冷哼從身側(cè)響起食零,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寂屏,沒(méi)想到半個(gè)月后贰谣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娜搂,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年吱抚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了百宇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秘豹,死狀恐怖携御,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情憋肖,我是刑警寧澤因痛,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布婚苹,位于F島的核電站岸更,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏膊升。R本人自食惡果不足惜怎炊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望廓译。 院中可真熱鬧评肆,春花似錦、人聲如沸非区。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)征绸。三九已至久橙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間管怠,已是汗流浹背淆衷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渤弛,地道東北人祝拯。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像她肯,于是被迫代替她去往敵國(guó)和親佳头。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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