之前在开发中只注重了sql的操作实现,而忽视了执行效率,最近经过老大的指点,才让我注意到了关于sql优化的问题,打算对MySQL的优化进行系统化的学习。以下几条不算是学习心得,是我自己的经验教训。

索引

在操作拥有大数据量的数据库时,将常用的条件字段标记为索引,将大大提高查询速度,但是过多的索引又会适得其反,降低插入和更新速度。因此,只需要将必要字段标记为索引。

连表查询

连表(join)查询可以很方便的获取多个表中的所需字段,如果在数据量比较小得表中,这确实是一种比较好的方案,然而,如果数据量过大,连表查询将极大的拖累查询速度,将导致查询耗时的指数级增加。

全表查询

在进行sql查询时,进行全表查询将耗费极多的时间,例如`select from sys_order`,但是如果限定查询的时间范围`select * from sys_order where created_at >= '2024-05-01' and created_at < '2024-06-01'`或者限定查询的数据量`select * from sys_order order by id desc limit 10`将极大的提高查询速度。

SQL批处理操作

在sql批处理时,需要配置JDBC连接URL中的参数rewriteBatchedStatements=true,并且需要MySQL驱动在5.1.13以上,才能实现高性能的批处理操作