MySQL是使用最廣泛的開源關系型數據庫管理系統之一。性能佳、高可用和易於使用是它流行的原因。本文給出一些在使用MySQL時的一些最佳實踐建議。
MySQL最佳實踐
1. 使用最合適的數據類型
選用數據類型應基於數據性質來決定。如果使用了不洽當的數據類型可能會浪費多余空間或者引發錯誤。
例:使用varchar(20)來存儲DATETIME數據類型的值時在計算時間相關會出現錯誤,同時也會導致存儲了無效的值。
2. 使用CHAR(1)而不是CARCHAR(1)
如果存儲單字符的值,使用CHAR(1)而不是VARCHAR(1),因為CARCHAR(1)會占用多余字節存儲額外信息。
3. 使用CHAR數據類型存儲固定長度的數據
如使用CHAR(1000)相比VARCHAR(1000)存儲數據時如果數據長度小於1000,將會浪費多余的空間。
4. 避免使用地區的日期格式
當使用DATETIME或者DATE數據類型時使用"YYYY-MM-DD"日期格式,或者ISO日期格式。像"DD-MM-YYYY"、“MM-DD-YYYY"等其它地區的格式無法正確存儲。
5. 索引key字段
確保在使用JOIN語句的字段使用了索引以提高查詢效率。
如果使用UPDATE時影響多個表,確保關聯表的字段添加了索引。
6. 不要在建立了索引的字段使用函數
在創建了索引的字段使用函數會破壞索引。如下:
SELECT columns FROM table WHERE left(customer_code, 2) = 'AK';
優化為:
SELECT columns FROM table WHERE customer_code LIKE 'AK%';
7. 不要使用SELECT *
指定查詢所需的字段。
8. 慎用ORDER BY語句
ORDER BY會影響SQL執行效率。這個以後會另起一篇來說明。
9. 選用合適的數據庫引擎
如果開發的項目讀無比讀的情況多,那選用MyISAM存儲引擎。
選擇錯誤的存儲引擎會影響數據庫性能。
10. 必要時使用EXISTS語句
為了檢測數據是否存在,使用EXISTS子句會更快。
IF (SELECT COUNT(*) FROM Table WHERE col='value') > 0
優化
IF EXISTS(SELECT * FROM Table WHERE col='value')