前段时间一直在做关于性能优化相关的工作,结合自己的实际工作经验,只针对SQL层面提一些优化的规范和建议。

针对SQL编写

1、单条SQL长度不宜超过100行;

2、SQL子查询不宜嵌套3层:

子查询嵌套过多,又可能会导致解析过于复杂,产生错误的执行计划;

3、SQL表关联需要考虑连接和限制条件的索引;

4、同一模块避免出现大量相似之处:

这种SQL写法一般比较可疑,一般可以优化,比如用with子句等;

5、尽量避免对列进行运算:

对列进行运算会导致索引失效,也会影响查询效率;

6、尽量批量提交;

7、尽量用数据量少的表作为驱动表,在表关联中,尽量使用小表关联大表。

索引相关

1、函数索引一般要尽量避免

2、位图索引在更新时是个噩梦,应谨慎使用

3、单表无索引时需要谨慎,但是索引数量也应控制

4、建联合索引时需要结合单列查询考虑,并考虑索引列的前后(详情参考前面的文章Oracle索引之Btree索引

阻碍索引的情况

1、在索引列上使用not和<>

索引只能告诉我们什么存在于表中,不能告诉我们什么不存在表中。

2、在索引列上使用计算

包括‘||’,’+’但不限于这些字符串连接函数和数学函数,都会停用索引。

3、相同的索引列进行比较,会启用全表扫描。

4、当检索数据量超过30%表中的记录数,使用索引将没有显著的效率提高。

如果觉得我写的对你有帮助,欢迎关注我的公众号“代码狗go”支持一下呀。

关于SQL优化的一点建议的更多相关文章

  1. 关于Kafka部署优化的一点建议

    网络和IO线程配置优化 配置参数 num.network.threads:Broker处理消息的最大线程数 num.io.threads:Broker处理磁盘IO的线程数 优化建议 一般num.net ...

  2. c/c++性能优化--- cache优化的一点杂谈

    之前写了一篇关于c/c++优化的一点建议,被各种拍砖和吐槽,有赞成的有反对的,还有中立的,网友对那篇博客的的评论和吐槽,我一个都没有删掉,包括一些具有攻击性的言论.笔者有幸阅读过IBM某个项目的框架代 ...

  3. sql优化建议

    背景:        在北京工作期间,我们做应用开发的和后台数据库的联系非常大,我们经常在一起讨论存储过程或者是sql性能优化的事情来降低应用运行时的时间,提高性能,经过和数据库方面的工程师的一些讨论 ...

  4. OCM_第十四天课程:Section6 —》数据库性能调优_各类索引 /调优工具使用/SQL 优化建议

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  5. 52 条 SQL 语句性能优化策略,建议收藏

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行nul ...

  6. SQL性能优化的思路建议

    如何在 Oracle数据库里写出高质量的SQL语句,如何在Oracle数据库里对有性能问题的SQL做诊断和调整,这是DBA们在ORACLE数据库实践中不可避免的难题.下面就让我们来分析一下拿到一条问题 ...

  7. (转)SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  8. SQL优化(zhuan)

    转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...

  9. SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

随机推荐

  1. Web Api使用Swagger提供在线文档

    1.添加Swashbuckle引用 2.生成XML文件 3.添加XML解析,在接口添加注释信息 4.运行项目输入地址   http://localhost:58254/swagger

  2. ie清理缓存

    说废话,直接上图. 1.打开浏览器 2.工具--->Internet选项 3.常规--->设置 4.Internet临时文件--->查看文件 5.将缓存文件夹中内容全部删除

  3. python panda::dataframe常用操作

    1.条件查询: result = df.query("((a==1 and b=="x") or c/d < 3))" print result 2.遍历 ...

  4. pandas(二)

    层级索引: index=[('a',2010),('b',2011),('c',2010'),('a',2012),('e',2010),('f',2011)] age=[18,17,18,16,18 ...

  5. CRT乱码问题

    本人在使用CRT过程中遇到乱码问题,经调试发现要把字体调整为"新宋体",编码格式用"UTF-8". 调整字体: Options à Session option ...

  6. Port Channel and VPC

    1.Port Channel 介绍 Port Channel  简介 绑定多个物理链路(最多8条),到一个单一的逻辑链路,在两个物理设备之间 每个物理端口只能被放入一个port-channel中. 在 ...

  7. 【git】强制覆盖本地代码(与git远程仓库保持一致)

    git强制覆盖:    git fetch --all    git reset --hard origin/master    git pull git强制覆盖本地命令(单条执行):    git ...

  8. PowerBI更新2019/04 - 解决方案架构 - PowerBI Solution Architecture(一图胜万字!)

    Power BI 架构图 (2019/04) 1) Power BI Desktop 是一个免费的工具.它可以用来准备和管理数据模型:包括链接各种数据:做数据清洗:定义关系:定义度量值和层级关系:应用 ...

  9. 2019.4.14 python基础30

    前面学习的变量,数据类型(整型,浮点数,布尔),序列(字符串,列表,元祖,字典,集合) ,可以看做是数据的组织方式.数据可以看做是“砖块”! 流程控制语句是代码的组织方式,可以看做是“混凝土” 一个完 ...

  10. Java基础(面试题)

    1:面向对象编程有很多重要的特性: 封装,继承,多态和抽象. 2:什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? (1)Java虚拟机是一个可以执行Java字节码的虚拟机进程.J ...