這篇文章主要介紹了數(shù)據(jù)庫(kù)的語(yǔ)句應(yīng)該如何優(yōu)化,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司是專業(yè)的融安網(wǎng)站建設(shè)公司,融安接單;提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行融安網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
在MySQL數(shù)據(jù)庫(kù)怎么加快查詢速度,優(yōu)化查詢效率,主要原則就是應(yīng)盡量避免全表掃描,應(yīng)該考慮在where及orderby涉及的列上建立索引。
第一:表里的索引不是越多越好
一個(gè)表的索引不是越多越好,也沒(méi)有一個(gè)具體的數(shù)字,根據(jù)以往的經(jīng)驗(yàn),一個(gè)表的索引最多不能超過(guò)6個(gè),因?yàn)樗饕蕉啵瑢?duì)update和insert操作也會(huì)有性能的影響,涉及到索引的新建和重建操作。
第二:建立索引的方法論為:
多數(shù)查詢經(jīng)常使用的列;
很少進(jìn)行修改操作的列;
索引需要建立在數(shù)據(jù)差異化大的列上
利用以上的基礎(chǔ)我們討論一下如何優(yōu)化sql。
先看這樣一條語(yǔ)句這樣的:select*fromuserswherearea=’beijing’andage=22;
如果我們是在area和age上分別創(chuàng)建索引的話,由于mysql查詢每次只能使用一個(gè)索引,所以雖然這樣已經(jīng)相對(duì)不做索引時(shí)全表掃描提高了很多效率,但是如果area,age兩列上創(chuàng)建復(fù)合索引的話將帶來(lái)更高的效率。
在使用索引字段作為條件時(shí),如果該索引是復(fù)合索引,那么必須使用到該索引中的第一個(gè)字段作為條件時(shí)才能保證系統(tǒng)使用該索引,否則該索引將不會(huì)被使用,并且應(yīng)盡可能的讓字段順序與索引順序相一致。
例如我們建立了一個(gè)這樣的索引(area,age,salary),那么其實(shí)相當(dāng)于創(chuàng)建了(area,age,salary),(area,age),(area)三個(gè)索引,這樣稱為最佳左前綴特性。
a.ORDERBY+LIMIT組合的索引優(yōu)化
如果一個(gè)SQL語(yǔ)句形如:SELECT[column1],[column2],….FROM[TABLE]ORDERBY[sort]LIMIT[offset],[LIMIT];
這個(gè)SQL語(yǔ)句優(yōu)化比較簡(jiǎn)單,在[sort]這個(gè)欄位上建立索引即可。
b.WHERE+ORDERBY+LIMIT組合的索引優(yōu)化
如果一個(gè)SQL語(yǔ)句形如:SELECT[column1],[column2],….FROM[TABLE]WHERE[columnX]=[VALUE]ORDERBY[sort]LIMIT[offset],[LIMIT];
這個(gè)語(yǔ)句,如果你仍然采用第一個(gè)例子中建立索引的方法,雖然可以用到索引,但是效率不高。更高效的方法是建立一個(gè)聯(lián)合索引(columnX,sort)
c.WHERE+ORDERBY多個(gè)欄位+LIMIT
如果一個(gè)SQL語(yǔ)句形如:SELECT*FROM[table]WHEREuid=1ORDERx,yLIMIT0,10;
對(duì)于這個(gè)語(yǔ)句,大家可能是加一個(gè)這樣的索引:(x,y,uid)。但實(shí)際上更好的效果是(uid,x,y)。這是由MySQL處理排序的機(jī)制造成的。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“數(shù)據(jù)庫(kù)的語(yǔ)句應(yīng)該如何優(yōu)化”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!