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. 不要在建立了索引的字段使用函数

在创建了索引的字段使用函数会破坏索引。如下:

1
SELECT columns FROM table WHERE left(customer_code, 2) = 'AK';

优化为:

1
SELECT columns FROM table WHERE customer_code LIKE 'AK%';

7. 不要使用SELECT *

指定查询所需的字段。

8. 慎用ORDER BY语句

ORDER BY会影响SQL执行效率。这个以后会另起一篇来说明。

9. 选用合适的数据库引擎

如果开发的项目读无比读的情况多,那选用MyISAM存储引擎。

选择错误的存储引擎会影响数据库性能。

10. 必要时使用EXISTS语句

为了检测数据是否存在,使用EXISTS子句会更快。

1
IF (SELECT COUNT(*) FROM Table WHERE col='value') > 0

优化

1
IF EXISTS(SELECT * FROM Table WHERE col='value')

11. 分析SELECT语句