sql server2008 字段拆分_SQL性能优化6把利剑

5a5f383b66854d18183f75d8974c7231.png

蒋蒋~~各位大神你们吼啊,又是我,智商233的天才少呂,今天忙碌了一天才有空余时间,今天给大家分享的是SQL性能优化!!

正文开始咯!!!

de10cae8d03753e6a6cb7b99a97196e1.gif

1.查询的模糊匹配 LIKE

尽量避免在一个复杂查询里面使用 LIKE 百分号会导致相关列的索引无法使用,最好不要用.

解决办法:

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

a、修改前台程序

b、直接修改后台

c1551ac3c411304e8cc2ee00e5d16fbd.png

2.索引问题

在做性能跟踪分析过程中,经常发现有些表连索引都没有。

这种情况往往都是因为在设计表时,没去定义索引,而开发初期,由于表记录很少,索引创建与否,可能对性能没啥影响,开发人员因此也未多加重视。

然一旦程序发布到生产环境,随着时间的推移,表记录越来越多

这时缺少索引,对性能的影响便会越来越大了。

这个问题需要数据库设计人员和开发人员共同关注

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

◆避免对索引字段进行计算操作

◆避免在索引字段上使用not,<>,!=

◆避免在索引列上使用IS NULL和IS NOT NULL

◆避免在索引列上出现数据类型转换

◆避免在索引字段上使用函数

◆避免建立索引的列中使用空值。

f739598e820b484fd364d351eb567d8b.png

3.复杂操作拆分

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

4860f7e71a88cb498172bad57f837a32.png

4.在可以使用UNION ALL的语句里,使用了UNION

UNION 因为会将各查询子集的记录做比较,故比起UNION ALL ,通常速度都会慢上许多。一般来说,如果使用UNION ALL能满足要求的话,务必使用UNION ALL

868fd3dec6a9347452da4457952d8559.png

5. 排序

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

6.对Select语句的法则

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

使用SELECT empno,ename,category FROM emp WHERE empno = '7369‘

而不要使用SELECT * FROM emp WHERE empno = '7369'

好啦!今天内容就推荐到这里!

想要学习更多的,Oracle学习资料获取方式:关注我+转发此文,然后私信我“Oracle资料”就可以获取啦!!

有什么想法或者问题欢迎私信!作为菜鸟的我会尽最大努力帮助的,共同进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值