溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫的語句應(yīng)該如何優(yōu)化

發(fā)布時間:2021-10-26 17:22:31 來源:億速云 閱讀:141 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要介紹了數(shù)據(jù)庫的語句應(yīng)該如何優(yōu)化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

  在MySQL數(shù)據(jù)庫怎么加快查詢速度,優(yōu)化查詢效率,主要原則就是應(yīng)盡量避免全表掃描,應(yīng)該考慮在where及orderby涉及的列上建立索引。

建立索引不是建的越多越好,原則是:

  第一:表里的索引不是越多越好

  一個表的索引不是越多越好,也沒有一個具體的數(shù)字,根據(jù)以往的經(jīng)驗,一個表的索引最多不能超過6個,因為索引越多,對update和insert操作也會有性能的影響,涉及到索引的新建和重建操作。

  第二:建立索引的方法論為:

  多數(shù)查詢經(jīng)常使用的列;

  很少進(jìn)行修改操作的列;

  索引需要建立在數(shù)據(jù)差異化大的列上

  利用以上的基礎(chǔ)我們討論一下如何優(yōu)化sql。

復(fù)合索引(形如(x,y,uid)索引的索引)

  先看這樣一條語句這樣的:select*fromuserswherearea=’beijing’andage=22;

  如果我們是在area和age上分別創(chuàng)建索引的話,由于mysql查詢每次只能使用一個索引,所以雖然這樣已經(jīng)相對不做索引時全表掃描提高了很多效率,但是如果area,age兩列上創(chuàng)建復(fù)合索引的話將帶來更高的效率。

  在使用索引字段作為條件時,如果該索引是復(fù)合索引,那么必須使用到該索引中的第一個字段作為條件時才能保證系統(tǒng)使用該索引,否則該索引將不會被使用,并且應(yīng)盡可能的讓字段順序與索引順序相一致。

  例如我們建立了一個這樣的索引(area,age,salary),那么其實(shí)相當(dāng)于創(chuàng)建了(area,age,salary),(area,age),(area)三個索引,這樣稱為最佳左前綴特性。

MySQY語句模型結(jié)構(gòu)優(yōu)化指導(dǎo)

  a.ORDERBY+LIMIT組合的索引優(yōu)化

  如果一個SQL語句形如:SELECT[column1],[column2],….FROM[TABLE]ORDERBY[sort]LIMIT[offset],[LIMIT];

  這個SQL語句優(yōu)化比較簡單,在[sort]這個欄位上建立索引即可。

  b.WHERE+ORDERBY+LIMIT組合的索引優(yōu)化

  如果一個SQL語句形如:SELECT[column1],[column2],….FROM[TABLE]WHERE[columnX]=[VALUE]ORDERBY[sort]LIMIT[offset],[LIMIT];

  這個語句,如果你仍然采用第一個例子中建立索引的方法,雖然可以用到索引,但是效率不高。更高效的方法是建立一個聯(lián)合索引(columnX,sort)

  c.WHERE+ORDERBY多個欄位+LIMIT

  如果一個SQL語句形如:SELECT*FROM[table]WHEREuid=1ORDERx,yLIMIT0,10;

  對于這個語句,大家可能是加一個這樣的索引:(x,y,uid)。但實(shí)際上更好的效果是(uid,x,y)。這是由MySQL處理排序的機(jī)制造成的。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“數(shù)據(jù)庫的語句應(yīng)該如何優(yōu)化”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI