以下的文章主要向大家描述的是MySQL 數據庫性能優化的實際操作方案隨著MySQL數據庫的不斷發展MySQL數據庫性能優化也變得越來越受重視以下的文章就主要對其性能優化做一詳細介紹
選取最適用的字段屬性
MySQL可以很好的支持大數據量的存取但是一般說來數據庫中的表越小在它上面執行的查詢也就會越快因此在創建表的時候為了獲得更好的MySQL數據庫性能我們可以將表中字段的寬度設得盡可能小
例如在定義郵政編碼這個字段時如果將其設置為CHAR()顯然給數據庫增加了不必要的空間甚至使用VARCHAR這種類型也是多余的因為CHAR()就可以很好的完成任務了同樣的如果可以的話我們應該使用MEDIUMINT而不是BIGIN來定義整型字段
另外一個提高效率的方法是在可能的情況下應該盡量把字段設置為NOT NULL這樣在將來執行查詢的時候數據庫不用去比較NULL值
對於某些文本字段例如省份或者性別我們可以將它們定義為ENUM類型因為在MySQL中ENUM類型被當作數值型數據來處理而數值型數據被處理起來的速度要比文本類型快得多這樣我們又可以提高數據庫的MySQL數據庫性能
使用連接(JOIN)來代替子查詢(SubQueries)
MySQL從開始支持SQL的子查詢這個技術可以使用SELECT語句來創建一個單列的查詢結果然後把這個結果作為過濾條件用在另一個查詢中例如我們要將客戶基本信息表中沒有任何訂單的客戶刪除掉就可以利用子查詢先從銷售信息表中將所有發出訂單的客戶ID取出來然後將結果傳遞給主查詢如下所示
DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )
使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的SQL操作同時也可以避免事務或者表鎖死並且寫起來也很容易但是有些情況下子查詢可以被更有效率的連接(JOIN) 替代例如假設我們要將所有沒有訂單記錄的用戶取出來可以用下面這個查詢完成
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/MySQL/201311/29745.html