MySQL是世界上使用最广泛的开源关系型数据库。它因其一致的快速性能,高可靠性和易用性而变得广受欢迎。本文介绍了MySQL的一些最佳实践。
1、始终使用正确的数据类型
使用什么数据类型取决于数据本身。如果你使用不相关的数据类型,可能会导致空间的浪费或者错误的发生。
示例:使用varchar(20)存储日期时间值而不是datetime数据类型将导致与日期时间相关的计算期间出现错误,并且还存在存储无效数据的可能情况。
2、用char(1)替代varchar(1)
如果你要存储一个字符,使用char(1)而不是varchar(1),因为varchar(1)会占用额外的字节。
3、只用char来存储固定长度的数据
如果数据的长度小于1000,使用char(1000)而不是varchar(1000)会占用更多空间。
因此,只用char来存储固定长度的数据,避免空间的浪费。
4、避免使用区域日期格式
使用datetime或date数据类型时,请始终使用适合你的SQL引擎的YYYY-MM-DD日期格式或ISO日期格式。其他区域格式如DD-MM-YYY,MM-DD-YYYY将无法正确存储。
5、给关键字段加索引
给JOIN子句中使用的字段添加索引,以便查询快速返回结果。
如果使用涉及多个表的UPDATE语句,请确保将用于连接表的所有列都添加了索引。
6、不要在索引字段上使用函数
在索引字段上使用函数会使索引失效。假设你想要获取客户代码的前两个字符为AK的数据,不要这样写:
SELECT col FROM table WHERE left(customer_code, 2) = ‘AK’
你应该这样写:
SELECT col FROM table WHERE customer_code like ‘AK%’
这将使用索引,加快查询速度。
7、仅在需要的时候使用SELECT *
不要在代码中盲目使用SELECT * 。 如果一张表存在多个字段,所有字段的数据都会被返回,这将减慢响应时间,尤其是在将结果发送到前端应用程序时。
8、仅在需要的时候使用ORDER BY
如果你想要在前端应用上显示结果,让前端对结果集进行排序。
在数据库使用ORDER BY进行排序会影响高并发环境下的响应时间。
9、选择合适的数据库引擎
如果你的数据库经常读数据,很少写数据,选择MyISAM存储引擎。
相反,如果你的数据库经常写数据,很少读数据,选择INNODB存储引擎。
选择不当的存储引擎会影响性能。
10、使用EXISTS子句
如果你想要检查某个记录是否存在,不要使用
if (SELECT count(*) FROM table WHERE col=‘some value’) > 0
而是使用
if EXISTS (SELECT * FROM table WHERE col=‘some value’)
使用exists会比count(*)快得多,特别是在数据量特别大的情况下。