我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql语句的优化方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql语句的优化方法有哪些

小编给大家分享一下sql语句的优化方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

sql语句优化的几种方法有:1、统一SQL语句的格式;2、对查询进行优化,应尽量避免全表扫描;3、SQL语句要简洁;4、考虑使用“临时表”暂存中间结果;5、尽量避免大事务操作;6、尽量避免向客户端返回大数据量。

sql语句的优化方法有哪些

我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。

sql语句优化的几种方法:

1、统一SQL语句的格式

对于以下两句SQL语句,很多人认为是相同的,但是,数据库查询优化器认为是不同的。

 ● select * from dual

 ● select * From dual

虽然只是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行!

2、少用 * ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

3、对查询进行优化,应尽量避免全表扫描

1)、应考虑在 where 及 order by 涉及的列上建立索引。

2)、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

3)、应尽量避免在 where 子句中使用!=或<>操作符,否则将导致引擎放弃使用索引而进行全表扫描

4)、应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num=10 or num=20

可以这样查询:

select id from t where num=10    
union all    
select id from t where num=20

5)、慎用in 和 not in,否则会导致全表扫描,如:

select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

6)、合理使用like模糊查询

有的时候会需要进行一些模糊查询比如:

select * from contact where username like ‘%yue%’

关键词 %yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%

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

select id from t where num/2=100

应改为:

select id from t where num=100*2

8)、应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:

查询name以abc开头的id

select id from t where substring(name,1,3)='abc'

应改为:

select id from t where name like 'abc%'

4、用 exists 代替 in

很多时候用 exists 代替 in 是一个好的选择,Exists只检查存在性,性能比in强很多。例:

select num from a where num in(select num from b)

用下面的语句替换:

select num from a where exists(select 1 from b where num=a.num)

5、不要把SQL语句写得太长,太过冗余、要简洁;能用一句千万不要用两句

一般,将一个Select语句的结果作为子集,然后从该子集中再进行查询,这种一层嵌套语句还是比较常见的,但是根据经验,超过3层嵌套,查询优化器就很容易给出错误的执行计划。因为它被绕晕了。像这种类似人工智能的东西,终究比人的分辨力要差些,如果人都看晕了,我可以保证数据库也会晕的。

另外,执行计划是可以被重用的,越简单的SQL语句被重用的可能性越高。而复杂的SQL语句只要有一个字符发生变化就必须重新解析,然后再把这一大堆垃圾塞在内存里。可想而知,数据库的效率会何等低下。

6、考虑使用“临时表”暂存中间结果

简化SQL语句的重要方法就是采用临时表暂存中间结果,但是,临时表的好处远远不止这些,将临时结果暂存在临时表,后面的查询就在tempdb中了,这可以避免程序中多次扫描主表,也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能。

7、在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,    否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

8、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。    
这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

9、尽可能的使用 varchar 代替 char ,因为首先变长字段存储空间小,可以节省存储空间,    其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

10、避免频繁创建和删除临时表,以减少系统表资源的消耗。

11、尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。

12、尽量避免大事务操作,提高系统并发能力。

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

以上是sql语句的优化方法有哪些的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql语句的优化方法有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql语句优化的方法有哪些

优化SQL语句的方法有以下几种:1. 使用合适的索引:通过为表中的列创建索引,可以加快查询的速度。需要根据查询的需求和数据的特点选择合适的索引类型和列。2. 减少数据库查询次数:可以通过合并多个查询为一个复杂查询、使用子查询、使用连接查询等
2023-09-05

MySQL语句优化的方法有哪些

有以下几种常见的MySQL语句优化方法:1. 添加索引:通过为经常用于查询的列添加索引,可以提高查询的性能。索引可以加快查询的速度,但是过多的索引会增加写操作的开销,因此需要谨慎选择合适的列添加索引。2. 优化查询语句:通过使用合适的查询语
2023-09-16

SQL语句性能优化的策略有哪些

这篇文章主要介绍“SQL语句性能优化的策略有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL语句性能优化的策略有哪些”文章能帮助大家解决问题。52 条 SQL 语句性能优化策略:1、对查询进
2023-06-28

clickhouse sql优化的方法有哪些

点击豪斯(ClickHouse)是一个列式存储的数据库管理系统,专门用于大规模分布式数据处理。以下是一些ClickHouse SQL优化的方法:设计合适的表结构:合理设计表的列和数据类型,以满足查询需求,并尽量避免使用复杂的数据类型和结构。
2023-10-23

sql优化常用的方法有哪些

SQL优化常用的方法有以下几种:1. 使用索引:索引可以加快查询的速度,可以在查询中使用WHERE子句中的字段创建索引。2. 避免使用通配符:%和_这些通配符会导致全表扫描,应尽量避免使用它们。3. 使用连接(JOIN)替代子查询:连接通常
2023-08-23

SQL语句limit的用法有哪些

在SQL语句中,LIMIT用于限制查询结果返回的记录数。在大多数数据库管理系统中,LIMIT的用法如下:1. 基本用法:LIMIT n,返回n条记录。```SELECT * FROM table_name LIMIT n;```2. 分页查
2023-09-05

SQL DELETE语句的用法有哪些

SQL DELETE语句用于从数据库表中删除一行或多行数据。DELETE语句的用法如下:1. 删除整个表中的所有数据:```DELETE FROM 表名;```2. 删除表中满足特定条件的数据:```DELETE FROM 表名 WHERE
2023-10-11

MySQL数据库的SQL语句优化方法

1、使用 show status 了解各种 SQL 的执行频率mysql> show status like "Com%";该命令可以查询 sql 命令的执行次数。2、定位执行效率较低的 SQL 语句定位执行效率较低的 SQL 一般有两种方法:通过慢查询日志定
MySQL数据库的SQL语句优化方法
2021-06-02

编程热搜

目录