加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

这些常被忽视的SQL错误用法,你知道吗

发布时间:2019-09-25 19:09:59 所属栏目:MySql教程 来源:佚名
导读:副标题#e# sql语句的执行顺序: FROM left_table ON join_condition join_type JOIN right_table WHERE where_condition GROUPBY group_by_list HAVING having_condition SELECT DISTINCT select_list ORDERBY order_by_condition LIMIT limit_number 1、LI

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

  1. WITH a AS  
  2. (  
  3.  SELECT resourceid  
  4.  FROM my_distribute d  
  5.  WHERE isdelete = 0  
  6.  AND cusmanagercode = '1234567'  
  7.  ORDER BY salecode limit 20) 
  8. SELECT a.*,  
  9.  c.allocated  
  10. FROM a  
  11. LEFT JOIN  
  12.  (  
  13.  SELECT resourcesid, sum(ifnull(allocation, 0) * 12345) allocated  
  14.  FROM my_resources r,  
  15.  a  
  16.  WHERE r.resourcesid = a.resourcesid  
  17.  GROUP BY resourcesid) c  
  18. ON a.resourceid = c.resourcesid 

总结

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

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

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

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

【编辑推荐】

  1. 分享一份MySQL思维导图--MySQL数据库脉络分析
  2. MySQL数据库表大小写不敏感处理,看完之后,大部分程序员收藏了
  3. 记一次生产环境SQL Server服务器卡顿问题解决--内存分配不当
  4. 为什么MySQL索引要用B+树,而不是B树?
  5. MySQL最新版8.0与5.7之性能对比
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:云计算网_泰州站长网)

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

热点阅读