oracle语句优化的关键点分析

oracle语句优化的关键点分析
优化算子:
在算子
SQL语言的优点是易于编写、清晰易懂,适用于现代软件开发风格。
但是,带内的sql的性能总是很低,并且从Oracle执行的步骤中分析了sql和sql之间的区别,而没有:
Oracle试图将它转换成多个表的连接。如果转换失败,首先在内部执行子查询,然后查询外部表记录。如果转换成功,它将直接通过多个表的连接进行查询,因此可以看出,在sql中至少有一个转换过程,一般的SQL可以转换成成功的,但不能用包统计转换成SQL。
建议:在业务密集型SQL中,尽可能少地使用内部运算符。
在算子
强列推荐不使用此操作,因为它不能应用表的索引。
建议:不要使用不存在或(外部连接+判断)
<运算符(不等于)
它不等于操作符从不使用索引,因此它的处理只会产生全表扫描。
建议:替换与其他功能相同的操作操作,例如

a > > 0被改为> 0或< 0
< >改为
是null或不是null操作(确定字段是否为空)
判断字段是否为空通常没有索引,因为B树索引不索引空值。
建议:
替换与其他功能相同的操作操作,例如
一个不为null改为>0或>等等。
字段不允许为空,默认值是使用一个默认值,而不是一个空值,比如一个业力应用程序中的状态字段不允许为空,默认值是应用程序。
构建位图索引(分区表不能建立,位图索引难以控制,例如字段值太多,索引将导致性能下降,多用户更新操作将增加数据块锁定现象)。
>和<运算符(大于或小于运算符)
大于或小于正常情况下运营商没有调整,因为它将被用于搜索的指数,但在某些情况下,它可以进行优化,如100万的记录表,数值字段,30万= 0, 300 = 1万记录39万记录,A = 2的记录,1万= 3.then执行> 2和> = 3的影响是非常不同的,因为Oracle会首先发现2记录索引,然后用> 2比较,而甲骨文将在甲骨文的发现= 3直接记录索引。
像算子
Like运算符可以通配符查询通配符组合内可到达几乎任何查询,但如果使用不当会导致性能问题,如鸟类%这个查询不参考指标,和喜欢的x5400 %将参考指标。实例:数字用户识别号码后与yw_yhjbqk表中的业务查询操作数yy_bh像鸟类%这个条件将产生一个全表扫描,如果改变了yy_bh like'x5400 %或yy_bh like'b5400 %将两yy_bh索引查询,大大提高了一定的性能。
UNION运算符
联盟将在表连接之后过滤重复的记录,因此在对表进行排序之后,我们将对结果集进行排序,删除重复的记录并返回结果。在大多数实际应用中,不生成重复记录,最常见的是进程表和历史表联合:

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

SELECT * FROM gc_dfys
联盟的所有
SELECT * FROM ls_jg_dfys
sql写作的影响
同一函数对sql性能的影响
例如由程序员编写的sql
SELECT * FROM zl_yhjbqk
程序员写
SELECT * FROM dlyx.zl_yhjbqk(与表所有者的前缀)
C程序员写的
SELECT * FROM dlyx.zlyhjbqk(大写的名字)
D程序员写
SELECT * FROM dlyx.zlyhjbqk(中更多的空间)
超过四的SQL在Oracle的分析结果和执行时间是相同的,但从Oracle的共享内存SGA原理,Oracle将为每个SQL语句的分析,并采取了共享内存,如果SQL字符串通过打字一样是一个共享内存只有甲骨文的分析,也只有会留下一个结果,这样不仅可以减少SQL分析时间,还可以减少重复记忆共享信息,Oracle也可以进行准确的频率统计SQL。
后面的条件顺序的影响
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,当二SQL 0.5%的记录是dy_dj和xh_bz,这是第二次SQL CPU占用率明显低于第一。
查询表顺序的效果
在从表中的列表会在执行SQL语句的性能影响,在Oracle索引和没有表为Oracle的案例统计分析的缺失环节按表格的顺序,因为错误的顺序表会产生消费数据(注:跨服务器的资源。如果表是统计分析,Oracle会自动将先进的小桌子,然后链接大桌子。)
sql语句索引的使用
优化算子
条件域的一些优化
函数处理的字段不能使用索引,如:
substr(hbs_bh,1,4)= '5400,优化处理:hbs_bh像' 5400% '
trunc(sk_rq)= trunc(SYSDATE),优化处理:
sk_rq > = trunc(SYSDATE)和sk_rq
执行显式或隐式操作的字段不能索引,如:
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 ',注:此条件进行隐式to_number变换hbs_bh,因为hbs_bh字段是字符型。
当包含多个表的字段操作时,不能对索引进行索引,例如:
ys_df > cx_df,不能优化
qc_bh | | kh_bh = '5400250000,优化:qc_bh = '5400和kh_bh = '250000
Oracle应用程序的提示(提示符)处理
在对Oracle生成的SQL分析执行路径不满意的情况下,可以使用即时处理。
目标提示:
成本(按成本优化)
规则(由规则优化)
选择(默认)(Oracle自动选择成本或规则优化)
all_rows(所有线路尽快返回)
first_rows(数据的第一行是尽快归还)
执行方法的提示:
use_nl(使用嵌套循环模式)
use_merge(使用合并连接模式)
use_hash(使用哈希连接模式)
索引提示:
索引(表索引)(使用提示的表索引查询)
其他高级技巧(如并行处理等)
总结

oracle的提示功能是一个比较强大的功能,也是一个比较复杂的应用程序。这是Oracle执行的一个建议。有时,如果是出于成本的考虑,甲骨文可能不会提示。根据实际应用,一般不建议应用程序开发者的Oracle数据库和服务器的性能,因为情况各有不同,可能是当地的性能提升,但另一个地方落下,Oracle的分析已经成熟的SQL实现,如果不是第一次执行路径分析数据库结构(主要是当前性能指标)、服务器(共享内存、磁盘文件碎片),数据库对象(表、索引)这几个方面的信息统计分析是正确的。

以上是Oracle SQL语句优化技术关键点分析的全部内容,希望对你有帮助,有兴趣的朋友可以参考:分析阶段,对Oracle数据库Oracle虚拟专用数据库的细节入手,对Oracle RAC和Oracle RMAN,介绍了分布式数据库的自动备份控制文件之间的差异,有什么问题可以随时留言,萧边会及时回复大家,希望多多支持的朋友!

tag:语句优化关键电脑软件Oracle

相关内容