Oracle数据库优化策略总结
来源:学问馆 本文已影响2.61W人
来源:学问馆 本文已影响2.61W人
SELECT时不利用函数
在做频繁的查询垄断时,尽量直接select字段名,然后利用C语言代码对查询收获做二次加工,避免让Oracle来做混杂的函数可能数学计算。因为Oracle出于通用性的琢磨,其函数及数学计算的速度远不及用C语言直接编译成机器码后计算来的快。
绑定变量
这个能够大幅度减退SQL的“hard parse”,我们大局部过程都曾经告终了变量绑定。个别未曾告终的,修正一下,也能很快看到收获。
批量FETCH
万一顺次select会归来多条(几百、上千)登记,利用批量Fetch,例如顺次fetch 1000条登记,要比一条条的fetch数据快的多,也能够管用减退oracle的压力。
批量提交
顺次修正多条(例如小于10000条左右)登记,然后顺次性提交,要比每条提交顺次快的多。当然前提是业务逻辑批准这么做。
批量增删改
万一必需顺次性修正可能剔除多条登记,能够批准批量数组绑定的.措施,这个和前面说得“绑定变量”相仿,差异是前者绑定的是一个变量,这里绑定的是一个大数组的首指针,这种措施要比逐条绑定厉行快的多。
SQL预解析
前面的大局部是批量垄断,还有一种常见的场景是小事务垄断,但频率极其高。这种场景等闲SQL也不混杂,几乎未曾优化的余地了,然而由于垄断频繁,同样会构成CPU居高不下。现在我们的过程大局部都是下面这个利用形式:
loop parse sql; bind var; execute sql; end loop;
固然我们利用了绑定变量的措施,然而由于垄断频繁,同样构成许多的“soft parse”以及网络通信。在内存数据库中,我们等闲批准预解析的措施来长进效率,事实上,Oracle很早就给开发者供给这种形式,只是开发者嫌繁琐没利于用而已。将过程改成下列形式:
parse sql; bind var; loop execute sql; end loop;
这么就能够管用减退Oracle的压力,能够将厉行效率起码长进一倍。然而这种形式波及到过程构造的改变,定然在设计阶段就这么做。否则,后期再调剂的话,危险和工作量都会很大。
SQL语句的一些优化措施
1、SQL语句用大写的;因为Oracle总是先解析SQL语句,把小写的字母转换成大写的再厉行。
2、避免在索引列上利用NOT等闲,我们要避免在索引列上利用NOT, NOT会发生在和在索引列上利用函数雷同的波及。
3、当Oracle“碰到”NOT,他就会静止利用索引转而厉行全表扫描。
4、避免在索引列上利用计算。WHERE子句中,假定索引列是函数的一局部。优化器将不利用索引而利用全表扫描。
5、尽量少用DISTINCT垄断,用EXISTS轮换DISTINCTvalues should never be negative。
优秀英语作文推荐:Her name is Hillary Clinton
学习Oracle数据库技巧攻略
My School Calendar课后反思
数据库access的优缺点总结
经济英语报道 Pascal Lamy of France
Carly Rae Jepsen《Call Me Maybe》中英歌词现场版视频
用access和excel进行数据分析总结
ACCESS转SQLSERVER的数据库的建议
数据库工程师
Kelly Clarkson because of you谐音歌词
Mozilla 新晋 CEO Brendan Eich 离职,是否会影响前景?
fatalerror是什么意思 fatalerror中文翻译-词组-例句
简述sqlserver数据库主键选取策略
SQLServer数据库实训总结
数据库实训总结
i recall with embarrassing clarity the flavor of those particular ashes ?
数据库的意思解释
corner是什么意思 coner详细解析-angle+corner含义区别
大数据时代个人隐私保护策略
外研社英语Module5Unit2《There are fourteen peaches》课后反思
如何用crontab系统每天定时备份MySQL数据库
如何使用CorelDRAW制作LOGO
2017最新Oracle关系数据库系统介绍论文
Jason Mraz & Colbie Caillat的Lucky乐评
Microarray数据分析软件:GenomeMTV
实现SQLServer数据库转成MYSQL数据库