數(shù)據(jù)庫(kù)索引優(yōu)化

內(nèi)存不可完全緩存所有數(shù)據(jù)的時(shí)候倾芝,體現(xiàn)索引的重要性专控。

MySQL支持的索引,不同的存儲(chǔ)引擎支持不同的類型

B-tree索引

B-tree索引的特點(diǎn)

? ? 以B+樹結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)

? ? 可加快數(shù)據(jù)的查詢速度

????適合范圍查找

B-tree的使用情況

? ? 1俭识、全值匹配的chaxun

? ? ? ? order_sn = "123456789987655";

? ? 2凉倚、匹配最左前綴的查詢

? ? ? ? 如果建立的所用是[order_sn,order_date],這時(shí)用order_sn查找還是可以找到的兼都。查找order_sn =?"123456789987655"為查找條件是可以找到的,如果order_date ='2016-11-03',則不可以找到稽寒。

? ? 3扮碧、匹配列前綴

????????order_sn like '9876%'

? ? 4、匹配范圍的查詢

? ? order_sn>'123456789';

? ??order_sn<'123456789';

? ? 5杏糙、精確匹配左前列并范圍匹配另一列

? ? 可精確匹配order_sn 列慎王,而order_date 是在范圍內(nèi)匹配。

? ? 6宏侍、只訪問(wèn)索引的查詢

限制:

? ? 1赖淤、如果不是按索引最左列開始查找,則無(wú)法使用索引

? ? ?2谅河、使用索引時(shí)不能跳過(guò)左邊索引中的列

? ? 3咱旱、Not in 和<>操作無(wú)法使用索引

? ? 4、如果查詢中有某個(gè)列的查詢范圍绷耍,則其右邊所有列都無(wú)法使用索引

Hash索引

Hash索引的特點(diǎn)

memory和innodb都支持

????????hash索引是基于Hash表實(shí)現(xiàn)的吐限,只有查詢條件精確匹配Hash索引中的所有列時(shí),才能夠使用到hash索引褂始。

? ? ? ? 對(duì)于Hash索引中的所有列诸典,存儲(chǔ)引擎會(huì)為每一行計(jì)算一個(gè)hash碼,Hash索引中存儲(chǔ)的就是Hash碼崎苗。

限制:

1狐粱、兩次查找

2、以hash碼存儲(chǔ)無(wú)法用于排序

3胆数、不支持部分索引查找也不支持范圍查找

4脑奠、可產(chǎn)生Hash沖突

為什么使用索引

1、大量減少存儲(chǔ)引擎需要掃描的的數(shù)據(jù)量

2幅慌、索引可幫助我們進(jìn)行排序宋欺,以避免使用臨時(shí)表

3、索引可以把隨機(jī)I/O變?yōu)轫樞騃/O

影響

1胰伍、索引會(huì)增加寫操作的成本

2齿诞、太多的索引增加查詢時(shí)間

索引優(yōu)化

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

問(wèn)題語(yǔ)句:

select ...... from product?

where to_days(out_date) - to_days(current_date)<=30?

to_days:函數(shù)

out_date:索引列

優(yōu)化語(yǔ)句:

?select ...... from product?

where out_date <= date_add(current_date,interval 30 day);

2骂租、前綴索引和索引列的選擇性

mysql B-tree 索引對(duì)鍵值的大小是有限制的祷杈。根據(jù)存儲(chǔ)引擎的不同而不同,對(duì)于innodb來(lái)說(shuō)索引最大的大小不能超過(guò)767個(gè)字節(jié)(255字符)渗饮,而myIsam最大不超過(guò)1000個(gè)字節(jié)但汞。當(dāng)字段比較大的時(shí)候宿刮,MySQL支持對(duì)前綴進(jìn)行索引

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

? ? create index index_name on table(col_name(n));

? ? 索引的選擇性是不重復(fù)的索引值和表的記錄數(shù)的比值

3、聯(lián)合索引

? ? 選擇索引列的順序

? ? ????經(jīng)常會(huì)被使用到的列優(yōu)先

? ? ? ? 選擇性高的列優(yōu)先

? ? ? ? 寬度比較小的列優(yōu)先(選擇性高前提)

4私蕾、覆蓋索引

? ? ? ? 通過(guò)B-tree索引直接獲得所需的數(shù)據(jù)僵缺,通過(guò)索引關(guān)鍵字直接索引存儲(chǔ)的信息,就不需要再讀取行的信息踩叭。包含所有查詢字段全部值的索引我們稱為覆蓋索引磕潮。這里的全部值包括where groupBy orderBy中的值

????????可優(yōu)化緩存、減少I/O

select language_id 是using index來(lái)自索引獲取數(shù)據(jù)


select * 是use where 將所有數(shù)據(jù)裝于內(nèi)存中容贝,用where條件過(guò)濾自脯。


使用索引來(lái)優(yōu)化查詢

1、使用索引掃描來(lái)優(yōu)化排數(shù)

? ? 索引的列順序和orderby子句的順序完全一致

? ? 索引中所有列的方向(升序斤富,降序)和orderby子句完全一致

? ? Order by中的字段全部在關(guān)聯(lián)表中的第一張表中膏潮。

2、B-tree模擬Hash索引優(yōu)化查詢

索引的維護(hù)和優(yōu)化

刪除冗余索引

pt-duplicate-key-checker h=127.0.0.1

查找未被使用過(guò)的索引

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末满力,一起剝皮案震驚了整個(gè)濱河市焕参,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脚囊,老刑警劉巖龟糕,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桐磁,死亡現(xiàn)場(chǎng)離奇詭異悔耘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)我擂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門衬以,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人校摩,你說(shuō)我怎么就攤上這事看峻。” “怎么了衙吩?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵互妓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我坤塞,道長(zhǎng)冯勉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任摹芙,我火速辦了婚禮灼狰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浮禾。我一直安慰自己交胚,他們只是感情好份汗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝴簇,像睡著了一般杯活。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上军熏,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天轩猩,我揣著相機(jī)與錄音,去河邊找鬼荡澎。 笑死均践,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的摩幔。 我是一名探鬼主播彤委,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼或衡!你這毒婦竟也來(lái)了焦影?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤封断,失蹤者是張志新(化名)和其女友劉穎斯辰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坡疼,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彬呻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柄瑰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闸氮。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖教沾,靈堂內(nèi)的尸體忽然破棺而出蒲跨,到底是詐尸還是另有隱情,我是刑警寧澤授翻,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布或悲,位于F島的核電站,受9級(jí)特大地震影響堪唐,放射性物質(zhì)發(fā)生泄漏巡语。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一羔杨、第九天 我趴在偏房一處隱蔽的房頂上張望捌臊。 院中可真熱鬧,春花似錦兜材、人聲如沸理澎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)糠爬。三九已至寇荧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間执隧,已是汗流浹背揩抡。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镀琉,地道東北人峦嗤。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屋摔,于是被迫代替她去往敵國(guó)和親烁设。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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