1.禁止使用SELECT *
1.1 查询时会将 * 解析成表的所有字段然后再查询,增加查询解析器的成本
1.2 select * 查询一般不走覆盖索引会查询大量的回表查询
2.小表驱动大表
2.1在使用left join,right join时后面拼接的应该是数据量较大的表,数据量小的应该放在from后面
3.给group by 的字段加上索引
为 GROUP BY
字段添加索引可以显著提高分组操作的效率。因为数据库在执行 GROUP BY
时,需要对结果进行排序或分区。使用索引可以加速排序和分区过程,从而提升查询性能。
4.在批量插入时使用动态添加如mybatis里面的<foreach>
这种方法允许你构建一条 SQL 语句来插入多条记录,减少数据库的连接次数和事务开销。
<insert id="batchInsertUsers">
INSERT INTO users (name, age)
VALUES
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.age})
</foreach>
</insert>
5.查询时数据量过大,使用limit
当查询可能返回大量数据时,使用 LIMIT
可以限制结果集的大小,从而减少内存使用和网络传输成本。
6. 其他查询优化建议
在查询中避免不必要的复杂计算和函数调用,特别是在 WHERE
和 JOIN
条件中。这些操作会增加查询的处理时间。
(PS:学习到其他的知识会及时补充)