您好,登錄后才能下訂單哦!
這篇文章主要介紹了數據庫的語句應該如何優化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在MySQL數據庫怎么加快查詢速度,優化查詢效率,主要原則就是應盡量避免全表掃描,應該考慮在where及orderby涉及的列上建立索引。
第一:表里的索引不是越多越好
一個表的索引不是越多越好,也沒有一個具體的數字,根據以往的經驗,一個表的索引最多不能超過6個,因為索引越多,對update和insert操作也會有性能的影響,涉及到索引的新建和重建操作。
第二:建立索引的方法論為:
多數查詢經常使用的列;
很少進行修改操作的列;
索引需要建立在數據差異化大的列上
利用以上的基礎我們討論一下如何優化sql。
先看這樣一條語句這樣的:select*fromuserswherearea=’beijing’andage=22;
如果我們是在area和age上分別創建索引的話,由于mysql查詢每次只能使用一個索引,所以雖然這樣已經相對不做索引時全表掃描提高了很多效率,但是如果area,age兩列上創建復合索引的話將帶來更高的效率。
在使用索引字段作為條件時,如果該索引是復合索引,那么必須使用到該索引中的第一個字段作為條件時才能保證系統使用該索引,否則該索引將不會被使用,并且應盡可能的讓字段順序與索引順序相一致。
例如我們建立了一個這樣的索引(area,age,salary),那么其實相當于創建了(area,age,salary),(area,age),(area)三個索引,這樣稱為最佳左前綴特性。
a.ORDERBY+LIMIT組合的索引優化
如果一個SQL語句形如:SELECT[column1],[column2],….FROM[TABLE]ORDERBY[sort]LIMIT[offset],[LIMIT];
這個SQL語句優化比較簡單,在[sort]這個欄位上建立索引即可。
b.WHERE+ORDERBY+LIMIT組合的索引優化
如果一個SQL語句形如:SELECT[column1],[column2],….FROM[TABLE]WHERE[columnX]=[VALUE]ORDERBY[sort]LIMIT[offset],[LIMIT];
這個語句,如果你仍然采用第一個例子中建立索引的方法,雖然可以用到索引,但是效率不高。更高效的方法是建立一個聯合索引(columnX,sort)
c.WHERE+ORDERBY多個欄位+LIMIT
如果一個SQL語句形如:SELECT*FROM[table]WHEREuid=1ORDERx,yLIMIT0,10;
對于這個語句,大家可能是加一個這樣的索引:(x,y,uid)。但實際上更好的效果是(uid,x,y)。這是由MySQL處理排序的機制造成的。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“數據庫的語句應該如何優化”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。