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

SQL优化的计数,表连接顺序,条件顺序,在和存在的优化

SQL优化的计数,表连接顺序,条件顺序,在和存在的优化
本文详细介绍了sql优化中计数、表、条件序、内、存在序的优化。它具有很高的实用价值:

1。关于计数

看到一些关于计数(*)和计数(列)的在线文章,计数(列)比计数(*)更有效吗

事实上,人们认为计数(*)和计数(列)根本不可比。计数(*)计算表的总数,而计数(列)则计算非空记录的数量。

但我们可以把它与实验相比较。

首先创建测试表:
下拉表测试清除;
创建测试表为SELECT * FROM dba_objects;

更新测试集object_id =行号;
设置定时
设置线宽1000
使AutoTrace

实施
从测试中选择计数(*);
select count(object_id)测试;

找到同一时间,他们有同样的效率吗

我们试图创造一个柱子上object_id指数
创建测试指标idx_object_id(object_id);

然后再执行它
从测试中选择计数(*);
select count(object_id)测试;

发现计算速度(object_id)显著高于计数(*)。这是因为数(object_id)可以用索引,所以效率有了很大的提高

我们修改的object_id列属性
修改表的测试修改object_id不空;

然后再执行它
从测试中选择计数(*);
select count(object_id)测试;

发现它们的速度同样快,计数(*)也可用于索引。

事实上,效率比较的前提是两种说法的写作应该是对等的,这两种文字是不等价的,因此没有可比性。

对于Oracle优化器,我们可以发现统计数据中计数的不同列是不同的。一般的趋势是,访问的代价越大,列的偏移量决定访问的性能就越高。计数(*)的开销独立于偏移量。因此,在某些情况下,计数(*)是最快的。

两。关于存在和存在

关于存在和存在的大多数陈述都是,效率高于存在,所以存在必须被存在等代替,但它真的是这样吗

让我们做一个实验。

在Oracle 10g中;
SELECT * FROM部门工资不在(选择上从EMP);
SELECT * FROM部门不存在(选择从EMP在EMP表。表dept.deptno);
我们发现存在确实比效率更有效。

但是我们再次声明如下
SELECT * FROM部门工资不在(选择上从EMP的地方);

你会发现,在非空约束条件下,存在和存在的效率是相同的。

看到三语句执行计划,你会发现没有非空约束和存在语句都采用了反半连接算法,所以效率是一样的,但在语句中没有非空约束使用过滤器,而不是反算法,所以效率较低。

因此,我们可以得出结论,在Oracle 10g中,如果能够保证非空,那么在约束中可以使用反半连接算法,这与此时的效率是一样的。

Oracle 11g:
SELECT * FROM部门工资不在(选择上从EMP);
SELECT * FROM部门不存在(选择从EMP在EMP表。表dept.deptno);
我们发现,这两个语句的效率是相同的,这是看到的执行计划一样。原来,Oracle优化了11g,所以效率和存在是相同的。

由此我们可以得出结论,在11g,使用效率和存在是相同的,因为他们都是更有效的反算法。

三。尺寸表的连接顺序

在互联网上,我们可以看到许多这样的文章。当我们执行多个表查询时,我们使用一个小表或交叉表来构成一个基本表,并把它放在后面,大表放在后面,因为表的访问顺序是从右到左。

但真的是这样吗

我们可以做实验验证(这里的测试环境是Oracle 11g):
创建表tab_big为SELECT * FROM dba_objects哪里rownum <= 30000;
创建表tab_small为SELECT * FROM dba_objects哪里rownum <= 10;
AutoTrace traceonly
设置线宽1000
设置定时
select count(*)从tab_big,tab_small;
select count(*)从tab_small,tab_big;
当我们查看执行计划时,我们可以发现这两种语句的效率是一样的。多表查询与表的顺序和效率无关吗

我们正在执行以下声明:
选择 / * * / +规则数(*)从tab_big,tab_small;
选择 / * * / +规则数(*)从tab_small,tab_big;
我们可以清楚地发现,右表中的小表、左表中的大表,查询效率要高得多。

事实上,在基于规则的时代,查询效率与表的顺序有关。小表或交叉表在左边和更大的表上效率更高,但现在基本上是一个基于成本的时代,所以大小表的顺序与效率无关,Oracle优化器会自动优化效率。

四和WHERE子句中连接条件的顺序

在基于规则的时代,Oracle采用自下而上的顺序来分析WHERE子句。根据这个原则,我们通常在后面放最少行数的表,在WHERE子句放在后面的带过滤条件的子句。

但是现在,基于成本的时代,这种优化是由Oracle优化器优化的,因此表的顺序和条件序列不会影响我们的查询效率。

相关文章

的mapiicon.exe过程是什么文件mapi

的mapiicon.exe过程是什么文件mapi

查询,文件,过程,电脑软件,mapiicon,评论:mapiicon.exe是宽带调制解调器诊断工具 进程文件:mapiicon或mapiicon.exe 过程名称:ADSL诊断工具 过程类别:安全风险的过程 英文描述: mapiicon.exe是一个工具,它允许您访问您的宽带接入,这也被称为对与…

教你加快mysql数据库

教你加快mysql数据库

数据库,教你,电脑软件,mysql,MySQL的自我引擎是肯定的,但在某些情况下,其他引擎可能更适合的任务比他们手头上。如果你想,你甚至可以使用MySQL API来创建自己的数据库引擎,就像把自己的化油器在汽缸。现在让我们看看你如何选择发动机,以及如何切…

Oracle错误(ora-00600)问题的处理

Oracle错误(ora-00600)问题的处理

错误,电脑软件,Oracle,ora,警报日志中的两天显示了这个错误。 ora-00600:internalerrorcode,kcblasm_1论点:{ },{ 103 },{ },{ },{ },{ },{ },{ } tueaug1209:20:17cst2014 errorsinfile / / /债券APP甲骨文/行政/ Oracle / / orcl_ora_29974.trc非格…

Windows需要碎片整理,为什么Linux不

Windows需要碎片整理,为什么Linux不

不需要,碎片整理,电脑软件,Windows,Linux,评论:如果您是Linux用户,您可能会听到Linux文件系统不需要被碎片化。您也可能注意到Linux的发行版没有磁盘碎片整理功能。 如果您是Linux用户,您可能会听到Linux文件系统不需要被碎片化。您也可能注意…

PS图象处理软件改变画布的颜色会

PS图象处理软件改变画布的颜色会

图象,处理软件,颜色,电脑软件,PS,核心提示:选择油漆桶工具,按住Shift键点击画布边缘设置画布的背景颜色为当前选定的前景。如果你想恢复到默认的颜色,设置前景色为25%灰度(基因,g192,b192)按shift+点击画布边缘了… 选择油漆桶工具,按住Shift键点击…

打开云看光,打开心培养个性签名

打开云看光,打开心培养个性签名

个性签名,电脑软件,云看光,走自己的路,偶尔抄别人的路。 我荒废的那一天,是昨日人们祈求的日子。 当你喜欢我的时候,我不喜欢你;当你爱上我的时候,我喜欢你;当你离开我的时候,我爱上了你; 你可以走进我的心房,请不要只是徘徊。 命运捉弄的人,你为…

对pascl32.exe-使用pascl32是什么

对pascl32.exe-使用pascl32是什么

电脑软件,exe,评论:详细的介绍了pascl32.exe过程 进程文件:pascl32或pascl32.exe 过程名称:Pas工具 过程类别:安全风险的过程 英文描述: pascl32.exe是网络打印服务工具。这个节目是非必要的,是,它也被称为豫。 中文参考: 对不起,暂时没有中文参考…

wbtray.exe的过程是怎样的

wbtray.exe的过程是怎样的

的是,过程,是怎样,电脑软件,wbtray,评论:对wbtray.exe工艺简介 进程文件:wbtray或wbtray.exe 进程名称:winbackup 2: 过程类别:安全风险的过程 英文描述: wbtray.exe是:过程winbackup 2从最新的。这最新的,它也被称为以下三个方面。 中文参考: 对…

Win7、Win8、Win8.1无线网络连接和

Win7、Win8、Win8.1无线网络连接和

公司,无线网络连接,电脑软件,点评:使用Win7系统或Win8或Win8.1系统时,总是会有一些问题,无线网络连接错误。本文总结了Win7、Win8、Win8.1无线网络连接,供你参考的解决思路的局限性。 我相信很多在win7系统或Win8或Win8.1系统经常会遇到无线网…

如何查看Win8程序不兼容吗兼容性中

如何查看Win8程序不兼容吗兼容性中

兼容性,不兼容,程序,中心,电脑软件,点评:以前的系统win7和XP系统,由于其高知名度,许多程序和软件都是基于他们的发展。所以,在现行体制的大的兼容性问题 Win8是常见的系统和软件,已经运行了很长一段时间的系统不兼容的问题。毕竟,以前系统win7和X…

插入声音文件方法

插入声音文件方法

方法,声音文件,电脑软件,如何使PPT充满活力并拥有音乐下面,让我们告诉你如何在PPT中插入声音文件! (1)准备好声音文件(*,*,wav等)。 选定需要插入声音文件的幻灯片,执行插入RARR;;在具有视频和声音文件;语音命令,打开插入;声音;声音文件对话框,定位到文件夹…

命令行导入MySQL数据库时的混沌代

命令行导入MySQL数据库时的混沌代

混沌,数据库,解决方案,命令行,代码,解uff1a 打开SQL文件并在SQL文件的第一行添加以下内容 40101 SET NAMES UTF8 * / / *; 保存SQL文件为UTF-8无BOM格式 通过FTP上传SQL文件,并将其放入根目录中 输入您的cPanel,看到玉米的工作图标,点击,并选…