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

oracle查询优化的基本准则详解

oracle查询优化的基本准则详解
1:当进行多表关联时,我们使用WHERE语句最小化单个表的结果集,并用聚合函数聚合结果集,然后与其他表相关联,从而使结果集数据量最小化。
2:当两个表关联时,我们应该考虑使用正确连接的可能性,以提高查询速度。
3:使用位置而不是拥有,用于过滤行,并用于过滤组,因为可以将行组过滤后分组,因此尽可能地过滤用户。
4:使用代替存在,因为存在只检查一行的存在,并检查实际值。
5:运算符中
SQL语言的优点是易于编写、清晰易懂,适用于现代软件开发风格。
但是SQL在内部的性能总是很低,因为:
sql语句总是试图将它转换成多个表,如果转换不成功,则首先执行内插。
子查询中,然后该表记录的外层
如果转换成功,则连接被转换为多个表。
进程。一般SQL可以转换为成功。
但是对于包含数据包统计数据的SQL,它不能被转换。因此,在业务密集型SQL中,尽可能不使用内运算符。
6:不在操作员中
强烈建议不要使用它,因为它不能应用表的索引。
在这种情况下,应该替换为存在、不存在或(外部连接+判断)。
7:<运算符
它不等于操作符从不使用索引,因此它的处理只会产生全表扫描。
在这种情况下,可以用其他方式替换,例如:
> 0 - > > 0或<0
>>
8类算子
SQL语句需要过滤完全取代设备的处理速度将大大提高。
9:联合运营商
在连接表之后,联合会过滤掉重复的记录,因此结果将在表链接链接后得到结果集。
删除重复记录并返回结果。在大多数实际应用中,不生成重复记录,最常见的是进程表和历史记录。
表联合,例如:
复制代码代码如下所示:
SELECT * FROM gc_dfys
联盟
SELECT * FROM ls_jg_dfys

此SQL在运行时取出两个表的结果,然后用排序空间对重复记录进行排序,最后返回结果集。
如果表中的数据量很大,则可能导致使用磁盘进行排序。
建议:使用联合所有运算符代替工会,因为在合并两个结果后,联合操作全部返回。
复制代码代码如下所示:
SELECT * FROM gc_dfys
联盟的所有
SELECT * FROM ls_jg_dfys

10个sql写作的影响
同一函数对sql性能的影响
例如由程序员编写的sql
SELECT * FROM zl_yhjbqk
程序员写
SELECT * FROM dlyx.zl_yhjbqk(与表所有者的前缀)
C程序员写的
SELECT * FROM dlyx.zlyhjbqk(大写的名字)
D程序员写
SELECT * FROM dlyx.zlyhjbqk(中更多的空间)
上述四个SQL的结果与Oracle分析之后的执行时间相同,但SGA是从Oracle共享的。
原理,
可以得出结论,Oracle将对每个SQL进行分析并获取共享内存,如果SQL的字符串和格式被写入。
同样,Oracle只会分析它一次,
共享内存将只留下一个分析结果,它不仅可以减少SQL分析的时间,而且可以减少共享内存的重复。
信息方面,oracle还可以准确计算SQL执行的次数。
11后面条件的影响:在哪里
WHERE子句后面的条件顺序对大数据量的查询有直接影响,如
复制代码代码如下所示:
SELECT * FROM zl_yhjbqk哪里dy_dj = '1kv下面和xh_bz = 1
SELECT * FROM zl_yhjbqk哪里xh_bz = 1和dy_dj =下面'1kv。

dy_dj超过两SQL(电压)和xh_bz(取消标记)两个字段没有索引,所以执行时间
它是全表扫描,
第一个SQL dy_dj =低于'1kv的条件99%在记录集和xh_bz = 1的比例仅为0.5%。
在第一个SQL的时候,99%的记录相比,dy_dj和xh_bz,而0.5%的记录被记录在第二SQL进行。
两dy_dj和xh_bz相比。
可以得出结论,第二SQL的CPU占用率显著低于第一SQL。
12的影响:表顺序
表后面的列表顺序影响SQL的性能,Oracle表中没有表的索引和统计分析。
在这种情况下,Oracle将按照表出现的顺序进行链接。
这是因为表的顺序不会产生非常耗费服务器资源的数据交叉,
oracle将自动链接高级的小表,然后链接大表。)
13:函数处理字段不利用索引,如:
复制代码代码如下所示:
substr(hbs_bh,1,4)= '5400,优化处理:hbs_bh像' 5400% '
trunc(sk_rq)= trunc(SYSDATE),优化处理:
sk_rq > = trunc(SYSDATE)和sk_rq < trunc(SYSDATE + 1)

执行显式或隐式操作的字段不能索引,如:
复制代码代码如下所示:
ss_df + 20 > 50,优化:ss_df > 30
X| | hbs_bh > 'x5400021452,优化:hbs_bh > '5400021542
sk_rq + 5 = SYSDATE,优化:sk_rq = sysdate-5
hbs_bh = 5401002554,优化:hbs_bh = '5401002554 ',注:这个条件是隐含在hbs_bh

to_number转换,因为hbs_bh字段是一个字符类型。
当包含多个表的字段操作时,不能对索引进行索引,例如:
ys_df > cx_df,不能优化
qc_bh | | kh_bh = '5400250000,优化:qc_bh = '5400和kh_bh = '250000
提示(提示符)处理为14:Oracle的应用
在对Oracle生成的SQL分析执行路径不满意的情况下,可以使用即时处理。
面对面暗示
目标提示:
成本(按成本优化)
规则(由规则优化)
选择(默认)(Oracle自动选择成本或规则优化)

选择emp_no,emp_nam,从哪里emp_no =斯科特dat_in bsempms;
all_rows(所有线路尽快返回)
选择emp_no,emp_nam,从哪里emp_no =斯科特dat_in bsempms;
first_rows(数据的第一行是尽快归还)
选择*
从xxx
其中xxx;
选择*
从xxx
其中xxx
优化器提示:它用于改进SQL语句的响应时间,并快速返回到n行。
提示访问路径
完整:执行满表扫描
甲状腺扫描:是通过rowid
索引:由索引扫描
SELECT * FROM EMP在表200和萨尔> 300;
如果超过一个被写入,Oracle自动选择哪一个是最优的。
SELECT * FROM EMP在表200和萨尔> 300;
index_join:如果选定的字段都是索引字段(几个指标),数据可以通过索引连接访问,而不需要访问数据。
表中的数据。

选择DEPTNO,萨尔从EMP
在表20;
index_ffs:执行快速全索引扫描

从EMP中选择计数(*);
no_index:指定的索引不使用

SELECT * FROM EMP在表200
萨尔300;
and_equal:指定一个组合的两个或两个以上的索引检索(交叉口),最多不超过5

执行方法的提示:
use_nl(使用嵌套循环模式)
USE_MERGE (using the MERGE join mode)
use_hash(使用哈希连接模式)

根据表从表中显示的顺序,该命令使Oracle按此顺序连接它。
例如:
选择a.col1,b.col2,c.col3从表一、表B,表3 C
在a.col1 = b.col1和b.col1 = c.col1;

将指定的表连接到嵌套连接的行源,并使用指定的表作为内部表。
例如:
选择bsdptms.dpt_no,bsempms.emp_no,bsempms.emp_nam
从bsempms,bsdptms bsempms dpt_no = bsdptms.dpt_no那里;

通过组合排序连接将指定表与其他行源连接起来。
例如:
SELECT * FROM bsempms,bsdptms
在bsempms dpt_no = bsdptms.dpt_no;

通过哈希连接将指定的表连接到其他行源。
例如:
SELECT * FROM bsempms,bsdptms
在bsempms dpt_no = bsdptms.dpt_no;
其他高级技巧(如并行处理等)
Oracle的提示是一个功能更强、应用更复杂的提示,提示只是Oracle的一个建议。
有时Oracle可能不会被成本考虑所驱使,根据实际应用,一般不建议开发人员应用Oracle提示。
由于每个数据库和服务器的性能不同,很可能本地性能有所改善,但另一个地方已经下降。
Oracle在SQL执行分析中比较成熟,如果分析执行的路径不是第一个,它应该在数据库结构中(主要是索引),
当前服务器的性能(共享内存、磁盘文件碎片)、数据库对象(表、索引)统计信息在这些方面的分析是正确的。

相关文章

pgptray是pgptray.exe-使用

pgptray是pgptray.exe-使用

电脑软件,pgptray,exe,点评:pgptray.exe是网络软件PGP加密程序,这是在系统托盘驻留程序 进程文件:pgptray或pgptray.exe 过程名称:网络联营PGP系统托盘应用程序 过程类别:安全风险的过程 英文描述: pgptray.exe安装网络软件和GP是系统盘,系统,它…

win7系统实现内外网同时连接工作和

win7系统实现内外网同时连接工作和

外网,连接,系统实现,在线教程,工作,评论:计算机设置只能连接到内部网,不能访问互联网,所以有用户希望同时连接内部网络和外部网络。他们既可以工作也可以上网。这是个好办法。你可以试着操作它,希望对你有所帮助。 在工作需要许多用户电脑设置…

MySQL为函数创建一个1418错误的解

MySQL为函数创建一个1418错误的解

错误,解决方案,函数,创建一个,电脑软件,复制代码代码如下所示: 错误代码:1418 这个函数没有确定性,没有SQL,也没有读取SQL,或者,它也被称为正确的方法。 (0毫秒) 分析uff1a 根据系统,这个误差可以通过安全设置配置造成的,检查手动log_bin_trust_func…

Win8系统过滤器SmartScreen防止恶

Win8系统过滤器SmartScreen防止恶

恶意软件,过滤器,系统,运行,电脑软件,评论:我们今天要谈论的是该公司filter.smartscreen滤波器是一种原始的IE功能帮助检测假冒网站。这是IE8和IE9的功能。该公司是一个安全防护软件,可以防止恶意程序运行在Windows8。 有能力在Windows8的许…

hotkeyapp.exe的功能是什么该hotke

hotkeyapp.exe的功能是什么该hotke

查询,功能,过程,电脑软件,hotkeyapp,点评:hotkeyapp.exe是宏碁宏碁计算机多媒体键盘配置程序 进程文件:hotkeyapp或hotkeyapp.exe 进程名称:hotkeyapp 过程类别:安全风险的过程 英文描述: hotkeyapp.exe是宏碁宏碁推出的经理提供的宏碁多媒体…

是ezejmnap.exe过程安全吗过程ezej

是ezejmnap.exe过程安全吗过程ezej

过程,电脑软件,ezejmnap,exe,点评:ezejmnap.exe是IBM的ThinkPad笔记本电脑easyeject工具,用来方便地连接上你的ThinkPad笔记本电脑多种设备 进程文件:ezejmnap或ezejmnap.exe 进程名称:easyeject效用 过程类别:安全风险的过程 英文描述: ezejmn…

在Win8系统的输入法教程添加不同的

在Win8系统的输入法教程添加不同的

系统,输入法,语言,教程,国家,点评:很多朋友不知道如何添加输入法win8。为此,本文将向您讲解如何将各种国家的输入方法添加到Windows 8系统中,感兴趣的朋友可以参考一下。 下面的教程是教你如何在Windows 8系统下添加每个国家的输入方法。 操…

有一次在Oracle进行参数设置永久保

有一次在Oracle进行参数设置永久保

方法,参数设置,有一次,电脑软件,Oracle,是目前进行的配置参数,而不是数据库配置参数、修改和保存SQLPlus配置参数,那么它不需要重置时打开SQLPLUS。 设置方法如下: 1。SQL >进行设置 然后,在SQLPlus 2。SQL >存储设置为oracle_home / / / glogi…

win7的只显示图标不显示预览图,如小

win7的只显示图标不显示预览图,如小

显示,图标,只显示,电脑软件,点评:Win7图片只显示图标,不显示缩略图;无论是调整小地图、地图、图片或其他不显示,使用截图工具剪下来的图片没有扩展名,这里是一个很好的解决方案,需要的朋友可以参考下 对问题的描述: 在Win7,图片只显示图标,不显示缩…

Oracle11g用户修改密码、锁定解锁

Oracle11g用户修改密码、锁定解锁

解锁,修改密码,用户,锁定,实例代码,1。运行cmd.exe; 2。输入SQLPLUS / SYSDBA连接数据库与系统管理员(数据库)作为数据库管理操作。 三.连接成功后 修改用户identityname密码;-修改密码 修改用户identityname帐户解锁;-解锁 更改用户帐户锁定i…

MySQL大内存配置方案,如my-medium.i

MySQL大内存配置方案,如my-medium.i

配置,内存,方案,电脑软件,huge,MySQL noinstall-5.1.xx-win32配置(原创) 1。mysql-noinstall-5.1.xx-win32.zip解压缩到您最喜爱的目录,例如:D: MySQL PHP 2。根目录中有五个配置信息文件: my-small.ini(内存 my-medium.ini(内存128M) my-large.…

XP进入DOS系统的多种方法

XP进入DOS系统的多种方法

方法,系统,多种,电脑软件,XP,评论:有很多朋友不知道如何进入XP系统的DOS系统。本文主要介绍XP进入DOS系统的各种方法。 许多朋友仍然不知道XP系统是如何进入DOS系统的。下面我将详细介绍如何进入DOS系统,希望能对您有所帮助! XP系统进入dos系…