位置: 编程技术 - 正文

数据库性能优化三:程序操作优化提升性能(数据库性能优化方法论和最佳实践)

编辑:rootadmin
数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第三部分 概述:程序访问优化也可以认为是访问SQL语句的优化,一个好的SQL语句是可以减少非常多的程序性能的,下面列出常用错误习惯,并且提出相应的解决方案 一、操作符优化 1. IN、NOT IN 操作符 IN和EXISTS 性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS 代替IN 。 Not IN 不走索引的是绝对不能用的,可以用NOT EXISTS 代替 2. IS NULL 或IS NOT NULL操作 索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于0,字符串类型设置一个默认值,判断是否等于默认值即可 3. <> 操作符(不等于) 不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。 用其它相同功能的操作运算代替,如 a<>0 改为 a>0 or a<0a<>'' 改为 a>'' 4. 用全文搜索搜索文本数据,取代like搜索 全文搜索始终优于like搜索: (1)全文搜索让你可以实现like不能完成的复杂搜索,如搜索一个单词或一个短语,搜索一个与另一个单词或短语相近的单词或短语,或者是搜索同义词; (2)实现全文搜索比实现like搜索更容易(特别是复杂的搜索); 二、SQL语句优化 1、在查询中不要使用select * 为什么不能使用,地球人都知道,但是很多人都习惯这样用,要明白能省就省,而且这样查询数据库不能利用“覆盖索引”了 2. 尽量写WHERE子句 尽量不要写没有WHERE的SQL语句 3. 注意SELECT INTO后的WHERE子句 因为SELECT INTO把数据插入到临时表,这个过程会锁定一些系统表,如果这个WHERE子句返回的数据过多或者速度太慢,会造成系统表长期锁定,诸塞其他进程。 4.对于聚合查询,可以用HAVING子句进一步限定返回的行 5. 避免使用临时表 (1)除非却有需要,否则应尽量避免使用临时表,相反,可以使用表变量代替; (2)大多数时候(%),表变量驻扎在内存中,因此速度比临时表更快,临时表驻扎在TempDb数据库中,因此临时表上的操作需要跨数据库通信,速度自然慢。 6.减少访问数据库的次数: 程序设计中最好将一些常用的全局变量表放在内存中或者用其他的方式减少数据库的访问次数 7.尽量少做重复的工作 尽量减少无效工作,但是这一点的侧重点在客户端程序,需要注意的如下: A、 控制同一语句的多次执行,特别是一些基础数据的多次执行是很多程序员很少注意的 B、减少多次的数据转换,也许需要数据转换是设计的问题,但是减少次数是程序员可以做到的。 C、杜绝不必要的子查询和连接表,子查询在执行计划一般解释成外连接,多余的连接表带来额外的开销。 D、合并对同一表同一条件的多次UPDATE,比如 UPDATE EMPLOYEE SET FNAME='HAIWER' WHERE EMP_ID=' VPAF' UPDATE EMPLOYEE SET LNAME='YANG' WHERE EMP_ID=' VPAF' 这两个语句应该合并成以下一个语句 UPDATE EMPLOYEE SET FNAME='HAIWER',LNAME='YANG' WHERE EMP_ID=' VPAF' E、UPDATE操作不要拆成DELETE操作+INSERT操作的形式,虽然功能相同,但是性能差别是很大的。 F、不要写一些没有意义的查询,比如 SELECT * FROM EMPLOYEE WHERE 1=2 三、where使用原则 1)在下面两条select语句中: select * from table1 where field1<= and field1>=0; select * from table1 where field1>=0 and field1<=; 如果数据表中的数据field1都>=0,则第一条select语句要比第二条select语句效率高的多,因为第二条select语句的第一个条件耗费了大量的系统资源。 第一个原则:在where子句中应把最具限制性的条件放在最前面。 2)在下面的select语句中: select * from tab where a=… and b=… and c=…; 若有索引index(a,b,c),则where子句中字段的顺序应和索引中字段顺序一致。 第二个原则:where子句中字段的顺序应和索引中字段顺序一致。 以下假设在field1上有唯一索引I1,在field2上有非唯一索引I2。 3) select field3,field4 from tb where field1='sdf' 快 select * from tb where field1='sdf' 慢, 因为后者在索引扫描后要多一步ROWID表访问。 select field3,field4 from tb where field1>='sdf' 快 select field3,field4 from tb where field1>'sdf' 慢 因为前者可以迅速定位索引。 select field3,field4 from tb where field2 like 'R%' 快 select field3,field4 from tb where field2 like '%R' 慢, 因为后者不使用索引。 4) 使用函数如: select field3,field4 from tb where upper(field2)='RMN'不使用索引。 如果一个表有两万条记录,建议不使用函数;如果一个表有五万条以上记录,严格禁止使用函数!两万条记录以下没有限制。

推荐整理分享数据库性能优化三:程序操作优化提升性能(数据库性能优化方法论和最佳实践),希望有所帮助,仅作参考,欢迎阅读内容。

数据库性能优化三:程序操作优化提升性能(数据库性能优化方法论和最佳实践)

文章相关热门搜索词:数据库性能优化方法论和最佳实践,数据库性能优化方法,数据库性能优化的重要性,数据库性能优化方法,数据库性能优化面试,数据库性能优化的主要方法,数据库性能优化工具,数据库性能优化方法,内容如对您有帮助,希望把文章链接给更多的朋友!

数据库性能优化二:数据库表优化提升性能 数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分优化①:设计规范化表,消除数据冗余数据库范式是确

数据库性能优化一:数据库自身优化提升性能 数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第一部分优化①:增加次数据文件,设置文件自动增长(粗略数

sqlserver中遍历字符串的sql语句 declare@dddvarchar(),@splitvarchar(1)set@ddd=',,,,'set@split=','while(charindex(@split,@ddd)0)beginselectsubstring(@ddd,1,charindex(@split,@ddd)-1)set@ddd=

标签: 数据库性能优化方法论和最佳实践

本文链接地址:https://www.jiuchutong.com/biancheng/347808.html 转载请保留说明!

上一篇:使SQL用户只能看到自己拥有权限的库(图文教程)(sql只能查询数据,不能修改数据)

下一篇:数据库性能优化二:数据库表优化提升性能(数据库性能优化方法论和最佳实践)

  • 计提个人所得税会计分录怎么写
  • 税务行政诉讼是由税务机关进行审理并作出裁决
  • 房地产耕地占用税实施细则
  • 报关金额必须跟收汇金额一致吗?
  • 增值税可以退税嘛
  • 会计凭证辅助项
  • 事业单位缴纳增值税标准
  • 其他债权投资和其他权益工具投资均可以计提减值
  • 劳务费确认收入
  • 联营企业股利收入
  • 委托加工物资两种情况例题
  • 银行会计错账冲正方法
  • 主营业务收入冲销
  • pe市盈率法
  • 售后回租的实际操作流程
  • 分配股利需要缴纳个税吗
  • 报废物资收入计入什么科目旧准则
  • 机打发票丢失如何处理报销
  • 增值税税负率计算包含附加税吗
  • 输入开票码开具电子发票
  • 公车私用情形有哪些
  • 报税报错了怎么办?
  • 代缴社保工资怎么做账
  • 代扣代缴的城建税和教育费附加按委托方所在地的税率
  • php连接mysql数据库详细步骤(图文)
  • php表单验证实例
  • Win10 Build21376内测版发布 重新设计默认用户界面字体
  • 债券转让增值税例子
  • 所得税费用怎么缴纳
  • 金融公司呆账对当事人有什么影响
  • 微信小程序完美修真攻略
  • 多提附加税跨年怎么计算
  • 福利企业增值税优惠政策
  • e卡 叠加
  • 基于php的系统
  • 个体户对公账户的钱怎么取出来
  • 哪些收入不列入交纳党费计算基数
  • js生成条形码的方式有哪些
  • 外经证预缴税款之后剩下的税款交到哪呢
  • php sleep()
  • python 邮件服务
  • 小规模企业免征增值税如何做账
  • 账面成本与账面余额
  • mysql主从复制实现原理
  • 废料处理没开票销项税
  • 息税前利润变动率的计算公式
  • 异地设立分公司怎么办理?
  • 自产商品对外赠送
  • 汇兑损益计入营业外收入吗
  • 固定资产内部转移流程
  • 多交增值税可以不退吗
  • 工资及福利费科目
  • 注销公司复杂吗?
  • 没计提的税费怎么处理
  • 企业搬迁安置费一般怎么赔
  • 法人存入公司账户会计分录
  • 如何判断应当预见
  • mssql查找备注(text,ntext)类型字段为空的方法
  • win7系统开机后黑屏只有鼠标指针可以移动
  • linux配置raid5方法
  • win7原版系统安装与激活
  • win8怎么设置开机直接进入桌面
  • 微软推送Win11226x1.2050
  • 人脉系统
  • windows7命名规则
  • linux查看端口数据
  • 迅雷看看电脑版 下载
  • win 10设置提醒
  • Windows 7 Apache下计算机无法访问局域网网站的解决方法
  • 了不起的女孩
  • Node.js中的全局变量有哪些
  • Compact 显示和更改 NTFS 分区上的文件或目录压缩
  • 半透明图层怎么制作
  • 刚开始学java的心得体会
  • js响应鼠标点击不了
  • android 数据
  • 出租车票据国税怎么开
  • 河北电子税务局社保缴费流程
  • 咸阳高新区税务局地址
  • 襄城是现在的哪个城市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设