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進行自動類型轉換,因為轉換過程也會讓索引變得不起作用!
以上,就是我為大家總結的幾點關於優化數據庫的操作,僅供參考,若有雷同,實屬巧合!
------作者 戀夏啊 2019-1-3