老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

总结在编写SQL中的几个实用小技巧!Python专业培训

老男孩IT教育

行业新闻

2021年12月22日 15:19

提到SQL语句,相信大家都不陌生吧,不管是哪种编程语言的工程师,都会在工作中接触到SQL,SQL可以起到对数据库增、删、改、查的作用,但不少人很少会考虑到SQL的性能优化,本篇文章整理了几个比较实用的小Tips,请看下文:

       提到SQL语句,相信大家都不陌生吧,不管是哪种编程语言的工程师,都会在工作中接触到SQL,SQL可以起到对数据库增、删、改、查的作用,但不少人很少会考虑到SQL的性能优化,本篇文章整理了几个比较实用的小Tips,请看下文:

Python开发课程

       从性能角度考虑,很多SQL关键字都有各自的使用场景,如果使用得恰当,就能大大提升后端服务的响应效率。

       union、union all、or三者区别如下:

       | union

       表连接后会利用字段的顺序进行排序,以此筛选掉重复的数据行,最后再返回结果,因此,当数据量很大时,效率较低。

       | union all

       相比union,union all在表连接时不会删除重复的数据行,直接返回表联合后的结果,因此,union all执行效率要高很多,在不需要去重和排序时,更推荐使用union all。

       | or

       用于SQL where子句中,SQL脚本可读性更高,但它会引起全表扫描,根本不走索引查询,所以通常情况下,union all查询会利用索引进行查询,执行效率要高于or,但当or条件中查询列相同,or的执行效率要高于union。

       group by + having、where三者区别如下:

       | group by

       分组查询,根据一个或多个列对结果集进行分组,一般配合聚合函数使用,其中,having和where使用上有这几点区别:

       | where

       在group by分组前执行,将查询结果按照条件过滤数据,需要注意的是,where无法与聚合函数一起使用。

       | having

       只能配合group by使用,在分组之后执行,用于过滤满足条件的组,需要注意的是,分组是一个耗时的操作,建议在分组前使用where对数据进行过滤,然后再进行分组,比如,where搭配having一起使用。

       exists、in三者区别如下:

       | exists

       exists用于where子句中,一般用于判断子查询中是否会返回数据,如果返回的数据不为空,则为True,否则为False。exists也可以搭配not使用,查询出不满足子查询语句的数据。

       | in

       同样用于where子句中,筛选出某个表字段存在于多个值中的所有数据,关键字in常见的2种使用方式如下:

       1、用于SQL做子查询最优方案是小表驱动大表,对于in来说是子查询表驱动外表,当子查询表数据少于主表数据时推荐使用;

       2、而exists是外表驱动子查询表,因此当外表数据少于子查询表时更推荐使用。

       关于"总结在编写SQL中的几个实用小技巧!"的话题到这里就结束了,老男孩Python全栈开发课程内容主要包括:Python开发基础、Python高级编程与数据库开发、前端开发、WEB框架开发、爬虫开发、全栈项目实战、数据分析、人工智能、自动化运维与开发以及高并发语言GO开发等,独家前沿课程内容,使学员找工作更有优势!

  推荐阅读:

       开发过程中经常使用到的5种设计模式有哪些?老男孩Python培训机构

       为什么那么多人推荐学Python?老男孩Python培训

       学习完Python后,有哪些就业方向?Python面授班

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。