您好,登錄后才能下訂單哦!
本篇內容介紹了“mysql的優化有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.選取最適用的字段屬性
一般來說,數據庫的的表越小,在其上面執行的查詢也會越快.因此,我們在設計表的時候可以將表中的寬度設的盡可能的小.
對于字段來說,,我們盡量和值為NOT NULL,這樣在查詢時,數據庫不用比較NULL值
對于某些文本字段,可以用ENUM類型來對該字段下的數值進行限制.
2.使用JOIN來代替子查詢
了解mysql的人都知道,使用子查詢可以一次性的完成很多邏輯上的需要多個復雜步驟才能完成的SQL操作,但是這樣的查詢會大大降低查詢的速率
如果使用JOIN來完成此項工作的話,速度會快很多.
JOIN之所以效率很高.是因為MYSQL不需要在內存中創建臨時表來完成這個邏輯上的兩個步驟的查詢工作.
3.UNION來代替手動創建的臨時表
mysql從4.0版本開始支持聯合查詢.
它可以把需要使用臨時表的兩條或更多的select查詢合并的一個查詢中,在客戶端的查詢會話結從而保證數據庫整齊,高效.
4.事務
盡管使用子查詢,JOIN和UNION來創建各種查詢.但并不是所有的操作都可以用一條或幾條SQL語句就可以完成的
為了防止數據庫出現意外.就要使用事務,推薦使用InnoDB引擎
其作用是可以保持數據庫數據的一致性和完整性.
另一個作用則是在多個用戶同時使用相同的數據源時,它可以鎖定數據庫的方法來為童虎提供一種安全的訪問方式
5.鎖定表
事務雖好,可由于它的獨占性,有時會影響數據庫的性能.假設有成千上萬的用戶同時訪問一個數據庫,就會產生比較嚴重的響應延遲
那么鎖定表,就可以起到維護數據完整性的作用,來獲得更好的性能.
6.使用外鍵
鎖定表也有它的弊端,那就是它不能保證數據的關聯性.這個時候,我們就可以使用外鍵.
注意,引擎要用innodb而不是myisam類型
7.使用索引
索引是提高數據性能的常用方法,它可以令數據庫服務器以比沒有索引快的多的速度檢索特定的行,尤其是在查詢語句中包含MAX(),MIN()和ORDER BY 這些命令的時候,性能提高更為明顯.
一般來說,索引應建立在那些用于JOIN ,WHERE 判斷 和ORDER BY 排序的字段上,盡可能不要對數據庫中某個含有大量重復值的字段建立索引.
8.優化的查詢語句
絕大多數下,用索引可以提高查詢的速度,但是如果SQL語句使用不恰當的話,索引將無法發揮作用.
那么該注意以下幾個方面:
1.最好在相同類型的字段間進行比較的操作
2.在建有索引的字段上盡量不要使用函數進行操作.
3.在搜索字符型字段時,我們有時會使用LIKE關鍵字和通配符,這種做法雖然簡單,但也是以犧牲系統性能為代價的操作.
最后,應該注意避免在查詢中讓MYSQL進行自動類型轉換,因為轉換過程也會讓索引變得不起作用!
“mysql的優化有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。