MYSQL的優化一個很棘手的問題,也是一個公司最想處理得當的問題. 那麼今天,本人為大家帶來幾點優化資料庫的方法: 1.選取最適用的欄位屬性 一般來說,資料庫的的表越小,在其上面執行的查詢也會越快.因此,我們在設計表的時候可以將表中的寬度設的儘可能的小. 對於欄位來說,,我們儘量和值為NOT NUL ...
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