书写高质量SQL的建议

技术教程 2026-01-08 17:46:37 浏览

1、避免混乱的逻辑

反例:(统计用户数量)

正例:

2、select one 如果已知结果只有一条, 使用limit 1

反例:(查找nickname = 报之琼瑶 的用户)

正例:

理由:

3、尽量避免在where子句中使用or来连接条件

反例:(查找name = 张三 或者 法外狂徒 的用户)

正例:

理由:

SQL

使用or将导致引擎放弃使用索引而进行全表扫描

4、优化like关键字

like常用于模糊查询, 不恰当的编码会导致索引失效

反例:

正例:

%123, 百分号在前不走索引

123%,百分号在后走索引

但是也会存在百分号在后不走索引的情况,mysql的innodb存储引擎最终执行哪种方法都是基于成本计算的, 通过比较全表扫描和二级索引比较再回表查询

可以通过

information_SCHEMA.OPTIMIZER_TRACE来分析查询过程

trAce字段json复制出来即可分析

5、查询SQL尽量不要使用select *,而是select具体字段, 不要返回用不到的任何字段。

反例:(统计用户数量)

正例:

理由:

6、尽量避免在索引列上使用mysql的内置函数

反例:

正例:

不走索引

走索引

7、应尽量避免在 where 子句中对字段进行表达式操作,这将导致系统放弃使用索引而进行全表扫

反例: (对字段user_age进行运算操作, 不走索引)

正例: (走索引)

原文链接:

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐