版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一切从表结构开始一切从表结构开始一切从表结构开始l绑定变量问题l索引使用问题lRownum使用问题lSequence使用问题lOralce基本原理的理解问题 一切从表结构开始绑定变量问题l程序未采用预编译语句导致未绑定变量l动态sql语句未实现绑定变量 一切从表结构开始索引的使用问题l 类型隐式转换导致索引失效 *程序中变量(参数)类型跟表中定义不一致导致隐式转换 *存储过程或者sql语句中参数,变量定义跟表不一致导致隐式转换 *同一意义的字段在各表中类型不一致但需要进行连接操作产生隐式转换设计问题(areacode字段在个邮不同表中的数据类型)l 索引列使用函数导致索引失效l 查询条件上无索
2、引导致索引失效严重的设计问题l 组合索引前导列未在查询条件中导致索引失效或者skip index range scan导致性能低下 一切从表结构开始rownum使用问题l Rownum使用跟排序同一层 select * from tab where rownum=5 OR ( sysdate - LastDealTime 10/(24*6*5) AND Status=1 ) OR status =-100 ; DELETE MMS_UserSend_Info WHERE Sendcount =5 OR ( sysdate - LastDealTime 10/(24*6*5) AND Statu
3、s=1 ) OR status =-100 ; 一切从表结构开始常见问题分析绑定变量问题l绑定变量 oracle判断一条sql语句是否相同仅以sql文本是否相同来判断,故文本不一致的sql语句,即需要进行解释生成不同的执行计划。故会造成文本差异的情况即会导致硬解析。会导致文本不一致的情况如大小写,缩进,未绑定变量等,其中又以未绑定变量的影响最大,且其影响是跟业务量成正比的,如果一个业务系统完全没绑定变量但又没有造成严重问题其实也是种悲剧悲剧(设置设置cursor_sharing =similar的情况例外,但此种设置极易导致bug从而引发重大问题) 。 解决:书写格式化一致(确定全部采用大写或
4、者小写,相同的缩进,空格统一,统一的换行标准等) 实现绑定变量l不绑定变量会有什么问题 性能问题性能问题 硬解析(代码演示) 索引失效(代码演示) 安全问题安全问题(代码演示) 容易sql注入-早期139邮箱未绑定变量被注入案例(admin所有密码被修改,photoshow站点被攻击) 检查检查sql执行计划干扰执行计划干扰一切从表结构开始常见问题分析绑定变量问题l 如何实现绑定变量 程序采用预编译 动态sql语句采用占位符(数据类型严格一致)l 如何知道是否实现了绑定变量 检查共享池(v$sqlarea)中sql语句 一切从表结构开始常见问题分析索引使用问题l 常见索引失效情况 类型隐式转换
5、 索引列上使用函数 索引列参与运算 查询条件未包括索引前导列(可能失效亦可能skip index range scan) 查询同一张表中同一个字段的最大最小值使用一条sql语句实现 一切从表结构开始常见问题分析索引使用问题l 如何避免索引失效 类型隐式转换的规避类型隐式转换的规避 总原则:一切从表结构开始 程序定义变量数据类型与表一致程序定义变量数据类型与表一致 存储过程,函数等参数,变量定义跟表一致存储过程,函数等参数,变量定义跟表一致(采用取表字段数据类 型的方式可以有效的规避数据类型不一致及将来表数据类型修改时避免存储过程不匹配) 表设计相同意义的字段在不同表中数据类型统一表设计相同意义
6、的字段在不同表中数据类型统一 查询列上使用函数的规避查询列上使用函数的规避 根据业务等价性改写语句尽量不需要使用函数根据业务等价性改写语句尽量不需要使用函数 对于无法避免一定要使用函数的咨询对于无法避免一定要使用函数的咨询DBA是否可以创建函数索引是否可以创建函数索引 一切从表结构开始常见问题分析索引使用问题l 如何避免索引失效 索引列参与运算索引列参与运算 根据业务等价性改写语句将运算转至条件(变量)根据业务等价性改写语句将运算转至条件(变量) select * from mail_notify_info where modifytime+ 1 / 24 sysdate = select *
7、 from mail_notify_info where modifytime sysdate -1/24 注:即使modifytime列上没有索引也应该这样改写,为什么? 查询条件未包括索引前导列查询条件未包括索引前导列 根据业务等价性改写根据业务等价性改写sql语句至使用上索引前导列语句至使用上索引前导列 此种情况需要从源头规避,即从表设计即对于会成为查询条件或者参与运算的列保证为not null类型,从而规避这种查询需求。 一切从表结构开始常见问题分析索引使用问题l 如何知道索引失效 执行计划是检查索引是否使用的唯一标准-v$sql_plan(OPTION=FULL) 索引监控定位当前索
8、引的使用情况 l 索引使用-参见培训文档“索引.ppt” 一切从表结构开始常见问题分析rownum使用问题l详见培训文档”从Rowid&Rownum开始.ppt”l一个例子,请大家思考一下结果如何 select * from userinfo where rownum=10 order by salary desc; select * from (select * from userinfo order by salary desc) where rownum create table userinfo(userid number,username varchar2(50),salar
9、y int);SQL insert into userinfo(userid,username,salary) select rownum as userid,张|rownum as username,1000+rownum as salary from dba_objects where rownum insert into userinfo(userid,username,salary) select rownum+100 as userid,李|rownum as username,1500+rownum as salary from dba_objects where rownum i
10、nsert into userinfo(userid,username,salary) select rownum+200 as userid,李|rownum as username,1300+rownum as salary from dba_objects where rownum commit; (1) 创建索引前写出结果集SQL create index ix_userinfo$salary on userinfo(salary);(2)创建索引后写出结果集 SQL alter table userinfo modify salary not null; (3) 修改salary字段
11、约束后写出结果集 -如果能够毫无疑问的写出正确的结果集则说明对如果能够毫无疑问的写出正确的结果集则说明对rownum及索引的存储理解超过了大部份人及索引的存储理解超过了大部份人 一切从表结构开始常见问题深入分析sequence使用问题l 如无必要,请直接调用序列l 一个表一个字段请使用一个序列切勿混用l 一个序列请仅用于一个表的一个字段l 引用序列或者序列设置请结合实际 程序中引用时请注意避免溢出问题 (数据类型定义跟序列定义匹配,无法匹配则要考虑序列对应表字段是否唯一且永久性保存)l 序列的设置考虑 如非必要请勿使用order,请一定要设置cache 在rac环境下 nocache+order的组合将是数据库杀手 一切从表结构开始Oracle书籍推
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同书样式范本
- 企业委托资产管理协议书
- 合租房屋合同样本
- 设计委托协议书模板
- 培训服务期协议范本
- 院校与企业人才共育协议
- 出口合同:肉禽类代理
- 二手汽车转让协议合同
- 的自来水管理承包合同范文2024年
- 球星易建联课件
- 安徽省江南十校2023-2024学年高一上学期12月分科诊断模拟联考数学试题
- 机械专业职业生涯发展报告
- 临床诊疗指南-口腔医学分册
- 生物统计与试验设计课件
- 部编版道德与法治五年级上册中华民族一家亲第一课时课件
- 女子沙滩排球跳发球空中击球技术的分析
- 气浮机使用说明书
- 《公务员回避制度》课件
- 品质管理与质量控制提升产品品质
- 四川省凉山州西昌市2023-2024学年四年级上学期期末数学试卷
- 康复护理的历史发展
评论
0/150
提交评论