Mysql優(yōu)化-查詢優(yōu)化

先分析一下查詢慢的原因:
  • 網(wǎng)絡(luò)
  • IO
  • CPU
  • 上下文調(diào)用
  • 系統(tǒng)調(diào)用
  • 生成統(tǒng)計(jì)信息
  • 鎖等待

以上問題都是sql 查詢中 出現(xiàn)慢的原因西傀。

優(yōu)化數(shù)據(jù)訪問

  • 查詢效率低下的主要問題是訪問的數(shù)據(jù)太多斤寇。某些查詢不可避免的篩選了大量的數(shù)據(jù),我們可以減少訪問數(shù)量進(jìn)行優(yōu)化
    1.確認(rèn)應(yīng)用程序是否在檢索大量超過需要的數(shù)據(jù)
    2.確認(rèn)mysql是否在檢索超過需要的數(shù)據(jù)行
  • 是否向數(shù)據(jù)庫查詢了不需要的數(shù)據(jù)
    1.查詢不需要的數(shù)據(jù)
    2.多表關(guān)聯(lián)時(shí)返回了不需要的列
    3.總是取出全部列
    4.總是重復(fù)的查詢相同的數(shù)據(jù)

執(zhí)行過程的優(yōu)化

  • 查詢緩存
    在解析一個(gè)查詢之前拥褂,如果查詢緩存是打開的娘锁。如果命中了這個(gè)查詢,查詢會(huì)先檢驗(yàn)一下用戶權(quán)限饺鹃,如果用戶權(quán)限沒有問題致盟,會(huì)直接返回給客戶端,并跳過所有檢驗(yàn)過程
  • 查詢優(yōu)化處理

1.語法解析和預(yù)處理
2.查詢優(yōu)化器

很多情況下mysql 會(huì) 選擇錯(cuò)誤的執(zhí)行計(jì)劃尤慰,原因如下:
1.信息統(tǒng)計(jì)不準(zhǔn)確
2.執(zhí)行計(jì)劃的成本不等同于執(zhí)行計(jì)劃的成本
3.mysql 的最優(yōu)和你想象得不一樣
4.mysql 不考慮并發(fā)情況
5.mysql 不受其控制得操作成本
優(yōu)化器的優(yōu)化策略
1.靜態(tài)優(yōu)化
直接對(duì)解析進(jìn)行優(yōu)化馏锡,并完成優(yōu)化
2.動(dòng)態(tài)優(yōu)化
與查詢的上下文有關(guān),也可能和取值伟端,索引對(duì)應(yīng)的行數(shù)有關(guān)

靜態(tài)優(yōu)化只需要一次杯道。
動(dòng)態(tài)優(yōu)化需要每次查詢重新評(píng)估
優(yōu)化器的優(yōu)化類型:
 重新定義關(guān)聯(lián)表的順序
 將外連接轉(zhuǎn)化成內(nèi)連接,內(nèi)連接效率高于外連接
 優(yōu)化 count().max().min()
 覆蓋所有
 子查詢優(yōu)化
 等值傳播

優(yōu)化特定類型的查詢

  • 優(yōu)化count查詢
myisam 的 count 是用一個(gè)變量來存儲(chǔ)的,沒有任何條件的count() 效率高 直接返回党巾。
  • 優(yōu)化關(guān)聯(lián)查詢
確保 on 和 using 的子查詢上有索引萎庭,在創(chuàng)建的時(shí)候要考慮到關(guān)聯(lián)順序
確保任何 order by 和 group by 只涉及到一張表中的列,這樣 mysql 才可以優(yōu)化這個(gè)過程
  • 優(yōu)化子查詢
子查詢建議盡量使用 關(guān)聯(lián)查詢代替
  • 優(yōu)化limit 分頁
盡量使用索引覆蓋齿拂,而不是查詢所有的列
例:
select film_id,description from film order by title limit 50,5
explain select film.film_id,film.description from film inner join (select film_id from film order by title limit 50,5) as lim using(film_id);
  • 優(yōu)化 union 查詢
除非確實(shí)需要服務(wù)器消除重復(fù)行驳规,否則使用 union all。
union 在查詢的時(shí)候 會(huì) 在臨時(shí)表 加上 distinct 署海,代價(jià)比較高
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吗购,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子砸狞,更是在濱河造成了極大的恐慌捻勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刀森,死亡現(xiàn)場離奇詭異踱启,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)研底,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門埠偿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人榜晦,你說我怎么就攤上這事冠蒋。” “怎么了芽隆?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵浊服,是天一觀的道長。 經(jīng)常有香客問我胚吁,道長牙躺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任腕扶,我火速辦了婚禮孽拷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘半抱。我一直安慰自己脓恕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布窿侈。 她就那樣靜靜地躺著炼幔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪史简。 梳的紋絲不亂的頭發(fā)上乃秀,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼跺讯。 笑死枢贿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刀脏。 我是一名探鬼主播局荚,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愈污!你這毒婦竟也來了耀态?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤钙畔,失蹤者是張志新(化名)和其女友劉穎茫陆,沒想到半個(gè)月后金麸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擎析,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年挥下,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揍魂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棚瘟,死狀恐怖现斋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情偎蘸,我是刑警寧澤庄蹋,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站迷雪,受9級(jí)特大地震影響限书,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜章咧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一倦西、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赁严,春花似錦扰柠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至程剥,卻和暖如春劝枣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工哨免, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茎活,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓琢唾,卻偏偏與公主長得像载荔,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子采桃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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