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

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

该如何优化SQL语句以提升速度?老男孩Python课程

老男孩IT教育

常见问题

2022年2月23日 13:47

不论是何种语言的编程人员,都会接触到SQL语句,SQL语句简单来说其实就是增删改查,但其中却充满了细节,尤其是大型网站,对查询速度是十分关注的,一个关键词的不对就会影响到其性能,你知道该如何优化SQL语句吗?请看下文:

       不论是何种语言的编程人员,都会接触到SQL语句,SQL语句简单来说其实就是增删改查,但其中却充满了细节,尤其是大型网站,对查询速度是十分关注的,一个关键词的不对就会影响到其性能,你知道该如何优化SQL语句吗?请看下文:

python课程

       1、避免全表扫描,首先考虑在where及order by的列上建立索引。

       2、尽量避免在where子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。

       3、尽量避免在where子句中使用or来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以使用UNION合并查询。

       4、in和not in也要慎用,否则会导致全表扫描,对于连续的数值,能用between就不要用in了。

       5、如果在where子句中使用参数,也会导致全表扫描。

       6、尽量避免在where子句中对字段进行表达式操作,应尽量避免在where子句中对字段进行函数操作。

       7、索引虽然可以提高相应的select的效率,但同时也降低了insert及update的效率,因为insert或update时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。

       8、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

       9、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

       10、常见的简化规则如下:不要有超过5个以上的表连接(JOIN),考虑使用临时表或表变量存放中间结果。少用子查询,视图嵌套不要过深,一般视图嵌套不要超过2个为宜。

       11、用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。

       12、尽量使用“>=”,不要使用“>”。

       13、尽量使用exists代替select count(1)来判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。

       14、sql语句用大写,因为oracle 总是先解析sql语句,把小写的字母转换成大写的再执行。

       15、别名的使用,别名是大型数据库的应用技巧,就是表名、列名在查询中以一个字母为别名,查询速度要比建连接表快1.5倍。

       16、避免死锁,在你的存储过程和触发器中访问同一个表时总是以相同的顺序;事务应经可能地缩短,在一个事务中应尽可能减少涉及到的数据量;永远不要在事务中等待用户输入。

       17、MySQL查询可以启用高速查询缓存。这是提高数据库性能的有效Mysql优化方法之一。当同一个查询被执行多次时,从缓存中提取数据和直接从数据库中返回数据快很多。

       18、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

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

  推荐阅读:

       Python中少为人知的5个安全陷阱!老男孩python培训机构

       Python中下划线的6个作用!老男孩Python线下面授班

       Python语言中去除字符串空格的5种方法总结!Python语言培训

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