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

如何让SQL再快一点儿

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

如何让SQL再快一点儿

这篇文章将为大家详细讲解有关如何让SQL再快一点儿,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。


SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统。

从接触编程到现在一直从事和数据库相关的工作,SQL是我使用时间最长的程序语言,没有之一。

关于SQL优化的文章网上很多,很具体,写的很不错,这里不再赘述。这篇文章将会结合平时工作中遇到的问题和经验心得来阐述如何做好SQL优化,其中有错误和不足的地方,还请大家纠正补充。

对于数据库优化有两个层面,一是SQL优化,属于业务层优化;一是数据库设计、表空间规划、缓存等属于管理层面的优化,我们这里只讨论SQL优化这个层面。

接受挑战

不要被运行效率低下或者复杂的SQL吓倒,要勇于接收它的挑战,问题很明确就是要把这个SQL优化快一点,解决方法肯定比遇到的问题多。

越是运行慢,越是复杂的SQL优化的空间就越大。

分析场景

数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 

OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作,对于SQL的执行效率有很高的要求;

OLAP 系统则强调数据分析,强调SQL执行时机,强调磁盘I/O,强调分区等。

OLTP要求事务一致性和快速执行,SQL执行时间一般以毫秒或者秒为单位;OLAP对事务一致性要求不高,SQL执行时间以分钟或者小时为单位。因此,不同的业务场景,SQL优化的方法也是不同的。

定位SQL优化点

由于数据库产品、参数配置甚至同一款产品的不同发行版本都会导致同一条SQL出现不同的运行效率。随着业务数据的增长,原本运行良好的SQL也会出现瓶颈。

变化再多也有规律可循,SQL运行效率低根本的问题就是SQL表关联太多、SQL逻辑太复杂、表数据量太大、未使用索引等,这些就是我们要优化的点。

拿到运行效率低的SQL以后,要分析一下该条SQL用到哪些表?哪些索引?表中的数据量是多少?对整个SQL运行的基础环境有一个清晰的认识。

优化SQL最常用的辅助工具就是数据库本身提供的“执行计划”,如何开启、使用执行计划分析和优化SQL,可点击文章最后左下角「阅读原文」查看之前整理的一篇关于《数据库SQL执行计划应用初探》的文章。

进行SQL优化

定位到SQL执行效率低下的原因以后,要想办法优化它,下面是一些通用的处理思路,可以参考一二。

索引;索引是关系型数据库中SQL优化的利器,设计良好的索引以及在SQL中正确应用索引基本上能解决大部分的SQL优化问题。可以通过执行计划分析SQL中索引的应用情况。

变通;3+6与4+5的结果都是9,做事的方式并不是唯一的,可能一种SQL写法效率很低,然而你换一个思路试试其他的写法,效率会有很大的提升,这个需要不断的尝试和摸索。

举个栗子,以Oracle为例查询公司男性与女性员工的薪资总和

select  

(select sum(salary) from employee where sex='男')  男性薪资总和,

(select sum(salary) from employee where sex='女')  女性薪资总和

from dual

更好的写法应该是

select

sum(case when sex='男' then salary else 0 end) 男性薪资总和,

sum(case when sex='女' then salary else 0 end) 女性薪资总和

from employee

我刚入门SQL时,就是采用了第一种写法,逻辑最简单明了,但是一个employee表却被扫描了两次(在没有索引的情况下),随着数据量的增加,这条SQL必然出现效率低的问题,第二种写法就会优化很多,效率更高。这是一个简单不能再简单的变通了(当然是现在看来,当时可能想不到)。

分解;把复杂的一条SQL可以拆解为多条简单SQL分步骤执行,可能你会觉得分步骤执行做了很多额外的工作,但是每条简单的SQL执行的会非常快,整体上提升了SQL执行效率。

SQL分解最常用的就是创建中间表,中间表只保存需要的字段和数据行,同时增加必要的索引,可大大提升SQL的执行效率。

环境;SQL优化要在同一个环境中进行,不同的环境中SQL执行路径可能是不同的,优化的方法也是不同的。尽量排除环境因素对SQL优化的影响。

经验;经验很重要,但是避免陷入经验主义。你可能在Oracle中有着非常丰富的SQL优化经验,但是在DB2数据库中可能就不灵了,不要纠结,这很正常。在我从Oracle数据库转向DB2数据库时就出现了很多问题,在Oracle中积累的经验转移到DB2中行不通,只能另辟蹊径。

SQL优化需要经验,但是不能太依赖经验,要不断调整自己的思路。每款数据库产品都有自己的特点,要了解它们,然后去不断应用。好在大部分的经验是通用的,只是略加调整即可,不要太大压力。

把平时优化SQL的技巧和方法总结下来,在真实的SQL优化场景中反复使用和调整,逐渐形成自己的一套优化经验。

关于“如何让SQL再快一点儿”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

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

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

如何让SQL再快一点儿

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

下载Word文档

猜你喜欢

如何让Python像Julia一样快地运行

如何让Python像Julia一样快地运行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Julia 与 Python 的比较我是否应丢弃 Python 和其他语
2023-06-17

html如何让字体变色一点

使用 css 或行内样式更改 html 中的文本颜色,步骤包括:创建并链接 css 文件(使用 "color" 属性定义颜色);在 html 元素中直接添加行内样式 ("style" 属性内包含 "color" 属性);使用十六进制颜色代码
html如何让字体变色一点
2024-04-11

如何选择数据库服务器,参考这几点让你不再被坑

随着互联网业务的越来越成熟,各种中小型企业投入的运营成本也越来越高,运营时间随着日积月累的增加,那些以数据库为主要支撑的系统应用,在发展成一定规模之后,对服务器硬件的设备要求就更加苛刻了,一旦服务器设备没办法承受数据库的压力,造成超负荷运行,将直接导致服务器上
如何选择数据库服务器,参考这几点让你不再被坑
2014-12-09

云服务器如何加速网速快一点

云服务器是一种虚拟服务器,它提供了快速的数据访问和存储服务,可以在同一时间内同时处理大量的数据。以下是一些加速云服务器的方法:更改数据加载方式:使用多台云服务器共同访问同一个数据集,可以减少等待时间。您可以更改数据加载方式,例如使用集群计算或批处理方式,以加速数据访问。提高服务器硬件配置:使用更高配置的服务器可以使您的网络速度更快,因为更高的硬件配置意味着更多的计算能力和磁盘空间。使用更
2023-10-26

云服务器如何加速网速速度快一点

使用CDN来缓存网页内容,提高网速。安装DNS工具,可以帮助你更好的找到网站的地理位置,更准确地定位网络连接状况。检查HTTPS设置,确保网站没有被SSL攻击,防止HTTPS加速。使用Chrome或者Firefox等浏览器扩展程序,安装扩展程序,可以更好地加快网速。使用云服务器,比如阿里云、腾讯云、Ucloud。这些云服务提供更多的云端存储和计算,更加有效地利用网络带宽。使用CDN工具
2023-10-26

腾讯云服务器网速如何提高的快一点

使用更快的网络连接使用更快的网络连接可以显著提高服务器的速度。因此,在使用腾讯云服务器时,建议优先考虑使用更快的网络连接。具体来说,可以通过更改路由器的设置、使用更快的光纤接入服务等方式来优化网络连接。使用更快的云服务器与传统的服务器相比,云服务器可以提供更快的处理速度和更高的存储容量。因此,在使用腾讯云服务器时,可以
2023-10-27

云服务器如何加速网速速度快一点呢

但是,使用云服务器加速网速的过程并不像使用普通的网络设备那样简单。下面是一些关于云服务器如何加速网速的建议:使用高速云服务器选择高速云服务器是加速网速的第一步。一些高速云服务器提供了高达25GB/s的网络带宽,这比普通的网络带宽快了近一倍。用户可以通过在浏览器中设置高速云服务器的连接,将其加速到更快的网络速度。优化网络
云服务器如何加速网速速度快一点呢
2023-10-28

腾讯云服务器网速如何提高的更快一点

升级服务器硬件:升级服务器硬件可以有效提升腾讯云的网络速度,减少延迟。用户可以选择更快的服务器硬件,如英特尔i5、i7等处理器,或者更快的刀片服务器,来提高网络带宽和处理能力。优化网络架构:优化网络架构可以减少网络延迟,提升网络速度。用户可以关闭不必要的网络服务,使用更高速的网络设备,或者优化网络路由器的设置。使用更高
腾讯云服务器网速如何提高的更快一点
2023-10-28

亚马逊云服务器网速如何提高的更快一点

增加带宽:可以通过增加服务器的带宽,从而提高服务器的访问速度。比如可以将一个服务器的带宽增加到几百兆,或者将一些服务器的带宽增加到1G以上。调整CPU架构:可以通过调整CPU架构来提高服务器的性能。例如,将多个处理器并联使用,可以将处理器的速度提高几倍。优化数据库:可以通过优化数据库的索引、数据库查询优化等方式,来提高数据库的性能。增加节点数量:可以通过增加服务器的节点数量来提高服务器的性能。比如,...
2023-10-27

腾讯云服务器网速如何提高速度快一点呢

一、选择合适的服务器硬件首先,选择一台适合自己业务的云服务器,需要考虑以下几点:服务器硬件配置:根据自己的业务需求,选择适合自己的硬件配置,比如CPU、内存、硬盘等。硬件配置:如果需要访问更高级的应用,则需要选择更高级的硬件配置,比如服务器CPU要选择更高性能的处理器,内存要选择更大的内存。硬件配置:如果需要访问更高级
腾讯云服务器网速如何提高速度快一点呢
2023-10-28

云服务器如何加速网速显示器速度快一点

一、选择适合的云服务器云服务器的类型有很多,包括AmazonWebServices、MicrosoftAzure、GoogleCloud、UberElasticBridge等等。不同的云服务提供商提供的服务质量、速度和价格都有所不同。因此,选择适合自己的云服务器需要根据自己的需求进行选择。二、优化服务器配置优化服务器配
云服务器如何加速网速显示器速度快一点
2023-10-28

腾讯云服务器网速如何提高速度和速度快一点

一、选择合适的服务器配置在选择腾讯云服务器时,我们需要考虑自己的业务规模和数据存储量。一般来说,我们可以选择多节点服务器,这样可以充分利用服务器的带宽和硬件资源。此外,我们还需要考虑服务器的硬件配置,包括CPU、内存、磁盘空间等。如果您的业务规模较大,我们还需要选择高端的硬件设备,以保证服务器的性能和稳定性。二、优化服
腾讯云服务器网速如何提高速度和速度快一点
2023-10-28

腾讯云服务器网速如何提高速度快一点的方法

在如今的互联网时代,网络已经成为了人们日常生活中必不可少的一部分,尤其是在云服务器的使用中,更是成为了许多企业和个人用户的选择。那么,如何提高腾讯云服务器的网速呢?下面,我们就来分享一些方法,帮助你更好地使用腾讯云服务器,提高你的网速体验。首先,我们可以使用腾讯云的高性能服务器来优化网速。腾讯云的高性能服务器可以提供更
2023-10-27

一个月备考软考,如何快速识别并攻克薄弱知识点?

备考软考,一个月的时间虽然紧张,但只要方法得当,依然可以高效识别并攻克薄弱知识点。打算参加软考的考生,要如何快速识别并攻克薄弱知识点呢?具体请见下文。
一个月备考软考,如何快速识别并攻克薄弱知识点?
2024-10-14

编程热搜

目录