加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

Java架构师笔记丨常见的错误 SQL 用法,你中招了吗?

发布时间:2019-07-25 23:34:29 所属栏目:评测 来源:Java架构师笔记
导读:1、LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。 好吧,可能90%以上的 DBA

再来看下面这个已经初步优化过的例子(左连接中的主表优先作用查询条件):

Java架构师笔记丨常见的错误 SQL 用法,你中招了吗?

那么该语句还存在其它问题吗?不难看出子查询 c 是全表聚合查询,在表数量特别大的情况下会导致整个语句的性能下降。

其实对于子查询 c,左连接最后结果集只关心能和主表 resourceid 能匹配的数据。因此我们可以重写语句如下,执行时间从原来的2秒下降到2毫秒。

Java架构师笔记丨常见的错误 SQL 用法,你中招了吗?

但是子查询 a 在我们的SQL语句中出现了多次。这种写法不仅存在额外的开销,还使得整个语句显的繁杂。使用 WITH 语句再次重写:

Java架构师笔记丨常见的错误 SQL 用法,你中招了吗?

总结

数据库编译器产生执行计划,决定着SQL的实际执行方式。但是编译器只是尽力服务,所有数据库的编译器都不是尽善尽美的。

上述提到的多数场景,在其它数据库中也存在性能问题。了解数据库编译器的特性,才能避规其短处,写出高性能的SQL语句。

程序员在设计数据模型以及编写SQL语句时,要把算法的思想或意识带进来。

编写复杂SQL语句要养成使用 WITH 语句的习惯。简洁且思路清晰的SQL语句也能减小数据库的负担 。

【编辑推荐】

  1. 程序狗必备:5个功能丰富的交互式Javascript库
  2. VS Code 的 Java 七月更新,新的重构特性
  3. Java类加载及对象创建过程详解
  4. 资深程序员经典总结:MySQL的并发控制原理
  5. 只需5分钟,掌握9个风骚又简洁的JavaScript技巧
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读