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

SQL性能优化有哪些措施

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

SQL性能优化有哪些措施

这篇文章主要介绍“SQL性能优化有哪些措施”,在日常操作中,相信很多人在SQL性能优化有哪些措施问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL性能优化有哪些措施”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  1.查询的模糊匹配

  尽量避免在一个复杂查询里面使用LIKE'%parm1%'——红色标识位置的百分号会导致相关列的索引无法使用,最好不要用。

  解决办法:

  其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:

  a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列就可以直接用等于来关联了。

  b、直接修改后台——根据输入条件,先查出符合条件的供应商,并把相关记录保存在一个临时表里头,然后再用临时表去做复杂关联。

  2.索引问题

  在做性能跟踪分析过程中,经常发现有不少后台程序的性能问题是因为缺少合适索引造成的,有些表甚至一个索引都没有。这种情况往往都是因为在设计表时,没去定义索引,而开发初期,由于表记录很少,索引创建与否,可能对性能没啥影响,开发人员因此也未多加重视。然一旦程序发布到生产环境,随着时间的推移,表记录越来越多。这时缺少索引,对性能的影响便会越来越大了。

  法则:不要在建立的索引的数据列上进行下列操作:

  避免对索引字段进行计算操作避免在索引字段上使用not,<>,!=避免在索引列上使用ISNULL和ISNOTNULL避免在索引列上出现数据类型转换避免在索引字段上使用函数避免建立索引的列中使用空值

  3.复杂操作

  部分UPDATE、SELECT语句写得很复杂(经常嵌套多级子查询)——可以考虑适当拆成几步,先生成一些临时数据表,再进行关联操作。

  4.update

  同一个表的修改在一个过程里出现好几十次,如:

  updatetable1setcol1=...wherecol2=...;updatetable1setcol1=...wherecol2=......

  这类脚本其实可以很简单就整合在一个UPDATE语句来完成(前些时候在协助xxx项目做性能问题分析时就发现存在这种情况)

  5.在可以使用UNIONALL的语句里,使用了UNION

  UNION因为会将各查询子集的记录做比较,故比起UNIONALL,通常速度都会慢上许多。一般来说,假如使用UNIONALL能满足要求的话,务必使用UNIONALL。还有一种情况大家可能会忽略掉,就是虽然要求几个子集的并集需要过滤掉重复记录,但由于脚本的特殊性,不可能存在重复记录,这时便应该使用UNIONALL,如xx模块的某个查询程序就曾经存在这种情况,见,由于语句的特殊性,在这个脚本中几个子集的记录绝对不可能重复,故可以改用UNIONALL)。

  SQL性能优化的措施有哪些

  6.在WHERE语句中,尽量避免对索引字段进行计算操作

  这个常识相信绝大部分开发人员都应该知道,但仍有不少人这么使用,我想其中一个最主要的原因可能是为了编写写简单而损害了性能,那就不可取了。9月份在对XX系统做性能分析时发现,有大量的后台程序存在类似用法,如:wheretrunc(create_date)=trunc(:date1),虽然已对create_date字段建了索引,但由于加了TRUNC,使得索引无法用上。此处正确的写法应该是wherecreate_date>=trunc(:date1)andcreate_date<>或者是wherecreate_datebetweentrunc(:date1)andtrunc(:date1)+1-1/(24*60*60)。

  注意:因between的范围是个闭区间(greaterthanorequaltolowvalueandlessthanorequaltohighvalue.),故严格意义上应该再减去一个趋于0的小数,这里暂且设置成减去1秒(1/(24*60*60)),假如不要求这么精确的话,可以略掉这步。

  7.对Where语句的法则

  7.1避免在WHERE子句中使用in,notin,or或者having。

  可以使用exist和notexist代替in和notin。

  可以使用表链接代替exist。Having可以用where代替,假如无法代替可以分两步处理。

  例子

  SELECT*FROMORDERSWHERECUSTOMER_NAMENOTIN(SELECTCUSTOMER_NAMEFROMCUSTOMER)

  优化

  SELECT*FROMORDERSWHERECUSTOMER_NAMEnotexist(SELECTCUSTOMER_NAMEFROMCUSTOMER)

  7.2不要以字符格式声明数字,要以数字格式声明字符值。(日期同样)否则会使索引无效,产生全表扫描。

  例子使用:

  SELECTemp.ename,emp.jobFROMempWHEREemp.empno=7369;

  --不要使用:

  SELECTemp.ename,emp.jobFROMempWHEREemp.empno='7369'

  8.对Select语句的法则

  在应用程序、包和过程中限制使用select*fromtable这种方式。看下面例子

  --使用

  SELECTempno,ename,categoryFROMempWHEREempno='7369'

  --而不要使用

  SELECT*FROMempWHEREempno='7369'

  9.排序

  避免使用耗费资源的操作,带有DISTINCT,UNION,MINUS,INTERSECT,ORDERBY的SQL语句会启动SQL引擎执行,耗费资源的排序(SORT)功能.DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。

  10.临时表

  慎重使用临时表可以极大的提高系统性能。

到此,关于“SQL性能优化有哪些措施”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

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

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

SQL性能优化有哪些措施

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

下载Word文档

猜你喜欢

Redis的优化措施有哪些

Redis的优化措施包括:使用合适的数据结构:根据需求选择合适的数据结构,如字符串、列表、哈希、集合等,以提高数据存取效率。避免大键值:尽量避免存储过大的键值对,以减少内存占用和提高读写效率。合理设置过期时间:根据业务需求设置合适的过期时间
Redis的优化措施有哪些
2024-05-07

sql注入防范措施有哪些

SQL注入是一种常见的网络攻击方式,为了防范SQL注入攻击,可以采取以下措施:1. 输入验证:对用户输入的数据进行严格的验证,确保输入的数据符合预期的格式和类型。可以使用正则表达式或其他验证方法来验证输入数据的合法性。2. 使用参数化查询或
2023-09-05

java sql注入防范措施有哪些

Java中防止SQL注入攻击的措施主要包括:1. 使用预编译语句或参数化查询:使用PreparedStatement对象来执行SQL语句,将参数化的查询参数以参数的形式传递给SQL语句,而不是将用户输入的值直接拼接到SQL语句中。这样可以防
2023-08-24

java sql注入防范措施有哪些

这篇文章将为大家详细讲解有关java sql注入防范措施有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java SQL注入防范措施概述SQL注入是利用恶意SQL查询来攻击数据库的一种技术,可能导致数据泄露、数据库损坏甚至服务器控制权丢失。对于Java Web应用程序来说,防范S
java sql注入防范措施有哪些
2024-04-10

Redis读取大数据量的优化措施有哪些

使用批量读取:尽量使用一次性读取多个数据项,而不是多次单独读取,以减少网络开销和提高读取效率。使用Pipeline:通过Pipeline将多个读取请求打包成一个请求发送给Redis服务器,减少网络往返次数,提高读取性能。使用合适的数据结构:
Redis读取大数据量的优化措施有哪些
2024-05-07

Teradata的数据安全性措施有哪些

Teradata作为一家大数据分析公司,提供了一系列数据安全性措施来保护用户的数据。以下是一些主要的措施:1.权限控制:Teradata提供了严格的权限控制机制,管理员可以根据用户的角色和职责分配不同的权限,以确保只有授权的用户可以访问特
Teradata的数据安全性措施有哪些
2024-04-09

Teradata的数据安全性措施有哪些

Teradata实施了多层次的数据安全性措施,包括存储加密、传输加密、用户身份认证、角色和权限、审计、静态和动态数据屏蔽、安全管理、合规性支持以及最佳实践(如使用强密码、实施双因素身份验证、定期进行安全评估和员工培训)。这些措施共同保护数据安全,防范未经授权的访问和数据泄露。
Teradata的数据安全性措施有哪些
2024-04-09

sql注入攻击的防范措施有哪些

防范SQL注入攻击的措施有以下几种:1. 使用参数化查询(Prepared Statements):使用参数化查询可以将用户输入的数据作为参数传递给SQL语句,而不是将用户输入的数据直接拼接到SQL语句中。这样可以防止攻击者利用输入的数据修
2023-08-23

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

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

PHP7有哪些性能优化

这篇文章主要介绍“PHP7有哪些性能优化”,在日常操作中,相信很多人在PHP7有哪些性能优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP7有哪些性能优化”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-17

PHP-FPM性能优化:提高网站安全性和稳定性的措施

随着互联网发展的迅猛,网站的性能优化变得越来越重要。在PHP开发中,PHP-FPM(FastCGI Process Manager)是一种常见的PHP解决方案,用于提高性能和网站的稳定性。但是,仅仅安装和配置PHP-FPM是不够的,还需要采
2023-10-21

优化网页性能的关键措施:解密重绘和回流

解密重绘和回流:优化网页性能的关键步骤在今天的互联网时代,快速加载和流畅的用户体验是每个网页设计师和开发人员追求的目标。然而,经常会遇到网页加载速度缓慢或页面卡顿的问题。这些问题一部分是由于浏览器对页面进行重绘和回流所导致的。了解重绘和回
优化网页性能的关键措施:解密重绘和回流
2024-01-26

提高Java代码可重用性的措施有哪些

这篇文章主要介绍了提高Java代码可重用性的措施有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇提高Java代码可重用性的措施有哪些文章都会有所收获,下面我们一起来看看吧。措施一:改写类的实例方法 通过类继
2023-06-03

编程热搜

目录