主頁(yè) > 教育培訓(xùn) > 電腦培訓(xùn) > MySQL學(xué)習(xí):數(shù)據(jù)庫(kù)十大優(yōu)化技巧

MySQL學(xué)習(xí):數(shù)據(jù)庫(kù)十大優(yōu)化技巧

  隨著mysql的越來越龐大,數(shù)據(jù)冗余也會(huì)越來越多,每次檢索mysql的時(shí)間也會(huì)成本的增加,這時(shí)需要優(yōu)化mysql就需要數(shù)據(jù)庫(kù)工程師了。

  這是看到朋友的博客,覺得不錯(cuò),轉(zhuǎn)載過來的。。

  1. 優(yōu)化你的MySQL查詢緩存

  在MySQL服務(wù)器上進(jìn)行查詢,可以啟用高速查詢緩存。讓數(shù)據(jù)庫(kù)引擎在后臺(tái)悄悄的處理是提高性能的最有效方法之一。當(dāng)同一個(gè)查詢被執(zhí)行多次時(shí),如果結(jié)果是從緩存中提取,那是相當(dāng)快的。

  但主要的問題是,它是那么容易被隱藏起來以至于我們大多數(shù)程序員會(huì)忽略它。在有些處理任務(wù)中,我們實(shí)際上是可以阻止查詢緩存工作的。

  // query cache does NOT work

  $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

  // query cache works!

  $today = date("Y-m-d");

  $r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

  // query cache does NOT work

  $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

  // query cache works!

  $today = date("Y-m-d");

  $r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

  2. 用EXPLAIN使你的SELECT查詢更加清晰

  使用EXPLAIN關(guān)鍵字是另一個(gè)MySQL優(yōu)化技巧,可以讓你了解MySQL正在進(jìn)行什么樣的查詢操作,這可以幫助你發(fā)現(xiàn)瓶頸的所在,并顯示出查詢或表結(jié)構(gòu)在哪里出了問題。

  EXPLAIN查詢的結(jié)果,可以告訴你那些索引正在被引用,表是如何被掃描和排序的等等。

  實(shí)現(xiàn)一個(gè)SELECT查詢(最好是比較復(fù)雜的一個(gè),帶joins方式的),在里面添加上你的關(guān)鍵詞解釋,在這里我們可以使用phpMyAdmin, 他會(huì)告訴你表中的結(jié)果。舉例來說,假如當(dāng)我在執(zhí)行joins時(shí),正忘記往一個(gè)索引中添加列,EXPLAIN能幫助我找到問題的所在。

  

優(yōu)化MySQL

 

  添加索引到group_id field后

  

MySQL數(shù)據(jù)庫(kù)優(yōu)化技巧

 

  3. 利用LIMIT 1取得唯一行

  有時(shí),當(dāng)你要查詢一張表是,你知道自己只需要看一行。你可能會(huì)去的一條十分獨(dú)特的記錄,或者只是剛好檢查了任何存在的記錄數(shù),他們都滿足了你的WHERE子句。

免責(zé)聲明:該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。返回查查吧首頁(yè),查看更多>>
提示

該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

優(yōu)惠商城

更多