文档章节

开发sql优化常用

i
 ianLi
发布于 2012/11/02 11:11
字数 642
阅读 320
收藏 15
 

1、检查SQL语句关联到的表有多少个

一条SQL语句如果关联到的表个数太多,就会由于排列组合的基数增大,导致CBO在产生执行计划的时候,可选执行计划太多,这不仅会增加CBO获得最优执行计划的时间,还可能使SQL语句的执行计划变得很不稳定,让同一条SQL语句在某个情况下出现执行效率较低的情况.一般而言,参与SQL语句的表个数不要超过5个,尤其是参与连接的表不是主键关联的基表时,表的连接个数更不要太多,如果的确要关联那么多表,就要考虑是否可以将SQL语句拆分,或者是否是表结构的设计不太合理,需要考虑方法加以改善。

2SQL语句关联主表中的WHERE条件是否有合适的索引

我们都很惧怕SQL语句在执行时出现全表扫描,尤其是大表的全表扫描,这在多数情况下不无道理,因为我们的数据大多是在线实时处理的,此时SQL语句选择的数据量不能太多,响应时间却要求极高,这说明数据的选择性一般较好,通过全表扫描可能不太合理,往往需要通过区分度高的索引来直接筛选数据。如果SQL中关联主表的WHERE条件上有索引,查看执行计划时也确实用到了这个索引,问题就不会太大,如果没有索引,就要考虑其他的已知条件是否可以有效筛选数据,还是不行的话,建议对该表新建一个索引进行评估。

3SQL语句中是否使用了不恰当的函数

SQL 语句中不恰当地使用函数,尤其是在索引字段上使用函数,会降低 SQL 语句的执行效率,这几乎成了我们的共识,不过,我们在 SQL 开发时,仍然会不经意的、在不一定要使用函数的地方使用函数,这一点在日期函数的使用上表现得比较突出,比较典型的写法为: trunc( 表的日期字段 )>= <=trunc( 传入的日期变量 ), 其实这种写法可以转变为仅在变量这部分使用函数,而不必要在数据库的字段上使用函数。

© 著作权归作者所有

共有 人打赏支持
上一篇: 责任链模式
下一篇: weblogic debug配置
i
粉丝 14
博文 262
码字总数 332671
作品 0
浦东
架构师
私信 提问
不懂开发的DBA 不是牛逼DBA

DBA 必须具备:SQL优化、系统运维、开发技能; 牛逼DBA就应该对上面三种技能有scale out ,多种数据库SQL优化、不同系统运维、以及常用开发语言开发技能。 一个字:屌!...

Vimeo
2016/02/26
71
0
MySQL--------SQL优化审核工具实战

1. 背景 SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关...

asd1123509133
2017/10/26
0
0
公司内部推荐职位,想找工作的,来看看

公司内部推荐职位,想找工作的,看到有合适职位的,可以发送 职位编号+你的姓名 到我的邮箱,chexiaorui@qq.com 我帮你推荐 职位编号 职位名称 招聘人数 工作地点 工作经验 工作职责 职位要求...

彩虹
2012/11/04
1K
10
互联网金融行业怎么看——诚聘

互联网金融行业,诚聘java工程师,中级30W,高级40W,架构50W: 要求1(信贷系统): 1、计算机相关专业,大专(统招)及以上学历,3年工作经验以上; 2、具备扎实的Java语言基础、熟练掌握Spr...

yilinhust2015
2015/12/03
467
12
广州PHPer求职

2年PHP开发经验(看我加入OSC的时间 - 5个月),一直的开发环境是PHP5.3+,命名空间,PDO常用。国产的开源系统,大概半天到一天时间去掌握就可以进入日常的开发了。国外系统wordpress这些吧,...

卡巴
2014/02/12
661
10

没有更多内容

加载失败,请刷新页面

加载更多

Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志

阻塞: 在设计简单字符驱动程序时,要注意一个重要问题. 当一个设备无法立刻满足用户的读写请求时应当如何处理? 例如:调用 read 时没有数据可读,但以后可能会有; 或者一个进程试图向设备写...

天王盖地虎626
3分钟前
0
0
作用域、作用域链精解

首先来几个名词解释: 作用域[scope]:每一个js函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供js引擎存取,[[scope]]就是对象其中一个属性。[[scope]]指的就是我...

IrisHuang
3分钟前
0
0
etcd集群备份和数据恢复

etcd是一个分布式k-v数据库,在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。 本文来自于:https://www.maideliang.com/index.php/archives/25/...

openthings
18分钟前
0
0
「阿里面试系列」面试加分项,从JVM层面了解线程的启动和停止

文章简介 这一篇主要围绕线程状态控制相关的操作分析线程的原理,比如线程的中断,线程的通信等,内容比较多,可能会分两篇文章 阿里面试系列导读:关注我的技术公众号【架构师修炼宝典】一周...

Java架构资源分享
25分钟前
2
0
centos安装confluence全攻略

https://blog.csdn.net/qwer026/article/details/51439076

happyeveryday32
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部