当前位置:首页 > 日记 > 正文

Oracle语句优化分析说明第1页2

Oracle语句优化分析说明第1页2
1的语法分析器。Oracle从右到左的顺序处理from子句的名称,因此将首先处理from子句(基表驱动表)中的最后一个句子。在from子句中的多个表的情况下,您必须选择一个表数最少的表作为基表。
例如:
表16384记录表
表1对记录
选择TAB2作为基表(最好的方法)
select count(*)从表,对执行时间0.96秒
选择TAB2作为基表(差法)
select count(*)从表2,表执行时间26.09秒
2、Oracle使用自底向上序列解析WHERE子句。根据这个原则,表之间的连接必须写在其他条件之前。可以筛选出最多记录数的条件必须写在WHERE子句的结尾处。
例如:
(效率低下,执行时间为156.3秒)
选择…
从EMP E
萨尔50000
工作=经理
和25 <(从EMP中选择计数(*)
在MGR = e.empno);
(效率高,执行时间10.6秒)
选择…
从EMP E
其中25 <从EMP中选择计数(*)
在MGR = e.empno)
萨尔50000
工作=经理;
避免在SELECT子句3中使用*。
当您想列出SELECT子句中的所有列时,使用动态SQL列引用*是一种方便的方法。不幸的是,这是一种非常低效的方式。事实上,解析过程中的Oracle将被转换成所有的名称,这是通过查询数据字典来完成的,这意味着将花费更多的时间。
4。使用解码功能减少处理时间,使用解码功能,避免重复扫描同一记录或重复同一表。
5。删除重复记录
删除重复记录的最有效的方法(因为数据使用)
删除EMP
在e.rowid >(选择min(x.rowid))
从EMP X
在x.emp_no = e.emp_no);
6。计算记录数
与一般观点相反,计数(*)比计数(1)稍快,当然,如果可以通过索引检索到电缆。
枚举仍然是最快的。例如,计数(EMPNO)
7。用WHERE子句替换带子句
为了避免使用带子句,只对结果集进行过滤,直到检索到所有记录为止。
这个过程需要进行排序、总计和其他操作。如果可以通过WHERE子句限制记录的数量,可以降低成本。
例如:
效率低下
选择区域,AVG(log_size)
从位置
集团由区域
具有区域区域!=悉尼
和区域!=珀斯
高效
选择区域,AVG(log_size)
从位置
区域区域!=悉尼
和区域!=珀斯
集团由区域
有条件通常用于比较某些集函数,如计数()等。除此之外,一般条件应写在WHERE子句中。
8。减少对表的查询
在SQL语句中包含子查询,特别要注意减少表的查询。
例如:
效率低下
选择tab_name
从表
在tab_name =(选择tab_name)
从tab_columns
版本= 604)
和db_ver =(选择db_ver)
从tab_columns
版本= 604)
高效
选择tab_name
从表
在(tab_name,db_ver)
=(选择tab_name,db_ver)
从tab_columns
版本= 604)
9。使用表的别名别名
当多个表连接的SQL语句,使用表的别名和前缀别名每column.this
因此,可以减少解析时间,减少列歧义造成的语法错误。
(列歧义意味着SQL中的不同表具有相同的列名。当列出现在SQL语句中时,SQL解析器无法确定列的属性。
10。代替存在
在许多基于查询的表查询中,为了满足一个条件,常常需要加入另一个表。
在存在(或不存在)的情况下,查询的效率通常会提高。
低效率:
*选择
来自EMP(基表)
在EMPNO > 0
和部门在(SELECT DEPTNO)
从系
在LOC =公司
效率高:
*选择
来自EMP(基表)
在EMPNO > 0
存在(选择x)
从系
在dept.deptno = emp.deptno
和LOC =公司
11。而不是不存在
在子查询中,在条款的不将执行一个内部的排序和合并。在任何情况下,不在是最低效的(因为它执行的子查询表的全表遍历)。为了避免使用不在,我们可以把它改写为外部连接(外部连接)或不存在。
例如:
选择…
从EMP
在dept_no没有(选择dept_no)
从系
在dept_cat =);
为了提高效率,重写如下:
(方法1:高效率)
选择了…
来自EMP A,B部
在a.dept_no =十堰(+)
和b.dept_no是空的
和b.dept_cat(+)= A
(方法二:最有效)
选择了…
从EMP E
不存在的地方(选择x)
从部门D
在d.dept_no = e.dept_no
和dept_cat =;
12。用表连接替换
一般来说,表连接比现有的效率更高。
选择一个
从EMP E
存在(选择x)
从系
在dept_no = e.dept_no
和dept_cat =;
(更有效率)
选择一个
来自D部,EMP E
在e.dept_no = d.dept_no
和dept_cat = ';
13。用存在替换
当提交包含一对多表信息的查询(如部门表和雇员表)时,请避免选择子句。
一般来说,使用不同的。可以被认为是被存在代替的
例如:
低效率:
选择不同的dept_no,dept_n
来自D部,EMP E
在d.dept_no = e.dept_no
效率高:
选择dept_no,dept_name
从部门D
存在(选择x)
从EMP E
在e.dept_no = d.dept_no);
14。避免在索引列上使用计算
在WHERE子句中,如果索引列是函数的一部分。优化器将使用一个完整的表扫描而不使用索引。
举一个例子:uff1a
低效率:
选择…
从系
萨尔* 12>25000;
效率高:
选择…
从系
12 > 25000;
这是一个非常实际的规则,一定要牢记在心。

相关文章

Solaris设置ADSL拨号上网

Solaris设置ADSL拨号上网

设置,拨号上网,电脑软件,Solaris,ADSL,审查:1。基本系统安装 #触摸 / / / pppoe.if PPP等 重新启动系统后,将创建与拨号相关的文件。 #触摸 / /网关等 重新启动后将添加IP路由功能。 #触摸 / / hostname.hme1等 重新启动后,将添加第二张…

PHP基本语法格式化

PHP基本语法格式化

格式化,基本语法,电脑软件,PHP,标准代码如下所示: 复制代码代码如下所示: … > 短标签模式(此模式需要修改PHP配置,让PHP支持短标签模式): 复制代码代码如下所示: … > uff1a笔记 复制代码代码如下所示: **… #…

的过程,是一个lxdboxcp.exe查询lxdb

的过程,是一个lxdboxcp.exe查询lxdb

查询,是一个,过程,电脑软件,lxdboxcp,点评:lxdboxcp.exe是在利盟打印机的DOS模式相关的程序 进程文件:lxdboxcp或lxdboxcp.exe 过程名称:利盟DOS打印 过程类别:安全风险的过程 英文描述: lxdboxcp.exe是一个处理印刷在DOS模式,过程DOS,它也被称…

如何从一个家庭或高级版终极升级Wi

如何从一个家庭或高级版终极升级Wi

升级,高级,家庭,电脑软件,点评:如何升级到Windows7最终从初级到高级的Windows7家庭版可以直接升级。这个问题是有关的。很多新手朋友都很关心这个问题。在这篇文章中,我们将向大家介绍大家。我们希望能帮助你。 核心提示:如何升级到Windows 7…

无限的空间和色彩的云加速商业和开

无限的空间和色彩的云加速商业和开

空间,无限,色彩,电脑软件,最近,第一个真正的无限空间在业内被沉重的云,和它再次突破国内云服务用户的免费云盘容量上限的想象。在Dropbox,目前的扩张和增值收费策略的SkyDrive等国外云盘实现,和Cai Yun不仅是免费的,但也导致再次刷新记录的云盘…

Win8创建、删除或格式化硬盘分区的

Win8创建、删除或格式化硬盘分区的

删除,全过程,格式化硬盘,电脑软件,注释:如何创建、删除或格式化硬盘分区一定有很多朋友。下面有一个很好的教程,有兴趣的朋友可以理解。 Win8创建的方式删除,或格式化硬盘分区如下: 1、将鼠标光标移动到屏幕右侧,单击弹出菜单;设置; 2、点击弹出…

PHP计算十二个星座的函数代码。

PHP计算十二个星座的函数代码。

函数,计算,代码,星座,电脑软件,核心代码: 复制代码代码如下所示: * *计算星座字符串get_zodiac_sign功能(字符串,字符串的一天) *输入:月份、日期 *输出:星座或错误消息的名称 * / 功能get_zodiac_sign($月$日,) { 检查参数的有效性 如果($月12美元3…

什么在Win8屏幕桌面图标做的(解决方

什么在Win8屏幕桌面图标做的(解决方

屏幕,解决方案,桌面图标,电脑软件,如果你使用Win8系统的电脑,如果你的机器上打开,你会发现在屏幕的磁带,桌面,图标丢失,不能进入传统桌面,这是为新手而沮丧,因为我不知道如何检索桌面。这篇文章检索方式;桌面图标。 1。在空白位置的磁接口上,点击鼠…

Linux使用微软鼠标第四、第五按钮

Linux使用微软鼠标第四、第五按钮

鼠标,按钮,方式,电脑软件,Linux,点评:本文主要介绍Linux使用微软鼠标第四、第五键的方法,需要的朋友可以参考一下。 虽然大多数人都没有使用Linux是什么样的微软,但不可否认的是,微软确实有很多好东西,比如微软鼠标(IE系列)icon_smile.gif IE 2及…

在win7系统打开麦克风听众详细图解

在win7系统打开麦克风听众详细图解

系统,麦克风,听众,详细,电脑软件,评论:当我们使用麦克风时,我们是否发现有些计算机正在与麦克风相呼应那是因为我们在语音设置中打开了麦克风下面的选项。我曾经用这个函数来判断麦克风是好是坏。让我们看看麦克风/监听功能在win7系统下一看…

使用SkyDrive的PDF文件转换成Word

使用SkyDrive的PDF文件转换成Word

方法,文件,溶液,文件转换成,电脑软件,的Win8.1系统自带的SkyDrive服务。它不仅可以存储文件,还可以用它来转换文件。这是一个通过SkyDrive的PDF文件转换为Word文档。 首先,被转换的PDF文件复制到SkyDrive SkyDrive自动上传到云服务器。 其…

windows下oracle完全卸载的方法分

windows下oracle完全卸载的方法分

方法,卸载,电脑软件,windows,oracle,Oracle在Windows下使用是完全卸载:可以卸载数据库,但是仍然会有一些残留在注册表和文件系统卸载后,这些残留物不仅占用磁盘空间,而且影响Oracle的安装和系统的性能。 卸载Oracle 10g的windows下的步骤:1删除…