Oracle SQL 开发误区探索
本文内容摘自《剑破冰山——Oracle开发艺术》一书。
1、避免对列运算
要善于通过等价改写消除 SQL 中对列的运算,这样可以避免索引无法使用。
2、消除隐式转换
3、关注空格(避免粗心)
4、存储过程与权限
存储过程有编译和执行两个阶段,编译阶段,调用权限和定义权限是一样的,而执行阶段则不同。
5、提防 DDL 提交事务
DDL 语句会在当前 session 完成 commit 动作,即便这个 DDL 操作失败了也依然如此。事实上,DDL 语句执行的第一步就是 commit,然后才是执行 DDL 本身,无论命令本身是否执行成功,只要 DDL 关键字出现,系统就会提交。在存储过程中要避免因 DDL 出现而破坏了事务的原子性。
6、INSERT INTO 应列出全部字段
7、OR 条件(注意加括号)
8、SEQUENCE 中的 CACHE
刚创建的序列必须用 nextval 来获取初始值,否则会提示 ORA-08002。如果设置了序列的 cache 后执行"alter system flush shared_pool"清空内存,会导致被缓存的序列号丢失。重启数据库也会导致 cache 中的连续号被清空。实际应用中一般不会要求序列连续,可以通过 cache 提高插入速度,且 cache 不应太小,一般也不要超过 300 个,再多性能提升也不明显了。其实即便设置了 nocache,只要执行了 nextval(如插入失败)就会导致断号,所以 nocache 选项没什么用!
9、树形查询易错处
过滤条件最好在 start with 后面和 connect by 后面都写上,这样才能有效的避免重复展现记录(where 后面可以省略),熟练且正确的使用树形查询是非常有用的,将会给工作带来很大的方便。
10、小心保留字(V$RESERVED_WORDS,该视图出现的 keyword 都是关键字)
其中 reserved 为 'Y' 那些关键字(也就是 plsqldev 中默认会变粗那些关键字)是不能直接作为标识符使用的,除非用双引号包裹,但这会给查询带来不便。比较坑的关键字有 size、current_date 等。
11、函数索引陷阱
自定义函数使用函数索引,如果改变了函数代码则必须重建函数索引,否则 Oracle 将使用这个函数索引查询出错误的结果且不提示任何错误,这应该是 Oracle 的 BUG。
12、标量子查询
标量子查询只和外关联语句写法等价,与内关联语句可能不等价。
标量子查询要避免单行子查询返回多个行,可以返回 0 或 1 行,否则就会包 ORA-01427 错误。因此使用标量子查询的场合大多选择在两表关联皆为主键的场合,在特定场合,业务允许一对多关联并随机取一条时,我们需用 rownum=1 来限制返回行数。
本文链接:http://www.cnblogs.com/hanzongze/p/oracle-sql-mistakes.html
版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!
Oracle SQL 开发误区探索的更多相关文章
- Oracle SQL开发 之 Select语句完整的执行顺序
查询语句语法: Select 属性 From 表 Where 条件 Group by 分组条件 Having 分组选择条件 Order by 排序条件 1.from子句组装来自不同数据源的数据: 2. ...
- oracle sql 高级编程 历史笔记整理
20130909 周一 oracle sql 开发指南 第7章 高级查询 1.层次化查询select level,ttt.*,sys_connect_by_path(ttt.col1,',') fro ...
- Oracle SQL Developer,Oracle 开发工具之toad、SQL Developer、PL/SQL Developer等比较
参考: oracle 的几个开发工具比较 因Oracle几乎是中大型商业企业数据的首选,所以比较一下常用与Oracle的工具. Oracle SQL Developer 免费,一般开发使用足矣,常用. ...
- Oracle sql develpoer
Oracle SQL Developer是针对Oracle数据库的交互式开发环境(IDE) Oracle SQL Developer简化了Oracle数据库的开发和管理. SQL Develo ...
- 【转】oracle数据库开发的一些经验积累
1.不安装Oracle客户连接Oracle 8的方法 请将以下文件拷贝到运行文件所在目录 一.ODBC动态库 : ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc ...
- Tools - Oracle SQL Developer
Oracle SQL Developer Oracle公司出品的一个免费非开源的用以开发数据库应用程序的图形化工具. 可以浏览数据库对象.运行SQL语句和脚本.编辑和调试PL/SQL语句,也可以创建执 ...
- 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)
利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后 ...
- 介绍几种大型的Oracle/SQL Server数据库免费版
我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...
- WIN7 64位配置Oracle SQL Developer工具
在使用Oracle SQL 的过程中,很多参考资料,辅导机构,各种书籍绝大多数都是使用PL/SQL进行讲解,但是问题是PL/SQL对WIN7 64位系统支持不好,网上有各种各样的配置教程,我尝试了很多 ...
随机推荐
- 设置tableView的组的头视图的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 1 ...
- 高级查询query
详细看 https://www.kancloud.cn/ldkt/tp5_db/229042
- s6-5 TCP 连接的建立
TCP 连接的建立 采用三次握手建立连接 一方(server)被动地等待一个进来的连接请求 另一方(the client)通过发送连接请求,设置一些参数 服务器方回发确认应答 应答到达请求方,请求方最 ...
- SSRF
SSRF 关于SSRF SSRF(Server-Side Request Forgery:服务器端请求伪造),攻击者通过伪造服务器端发起的请求,获取客户端所不能得到的数据.一般情况下,SSRF攻击的目 ...
- C# WebAPI系列(1)
WebApi是微软在VS2012 MVC4版本中绑定发行的,WebApi是完全基于Restful标准的框架.RestFul: (英文:Representational State Transfer,简 ...
- Hadoop2.0源码包简介
Hadoop2.0源码包简介 1.解压源码包: 2.目录结构: hadoop-common-project:Hadoop基础库所在目录,如RPC.Metrics.Counter等.包含了其它所有模块可 ...
- CENTOS7常用的基础命令集合(一)
目录(?)[-] CentOS7 常用命令集合 常用命令 文件与目录操作 查看文件内容 文本内容处理 查询操作 压缩解压 yum安装器 网络相关 系统相关 系统服务启动相关 防火墙相关 RPM包管理 ...
- VS2013和NuGet
1.前言 有时候在使用VS2013时需要用到第三方的dll,这时候NuGet就是一个很方便的工具.但是这个小东东也是和VS不同的版本相关的,最开始不知道,乱安装一气,最后就是很多情况下不能用.这两天在 ...
- TIME_WAIT状态过多的排查
一.概述 (一)现象 服务器有两个现象,第一是tcp连接数不多,不超过10个,但是time_wait状态的2000.第二个按照以往的性质,在很少用户访问的情况下,服务器的资源几乎没有使用,比如CPU, ...
- Mybatis框架四:输入参数、输出参数
输入参数可以有三种:简单类型,POJO,包装类 关于前两种: http://www.cnblogs.com/xuyiqing/p/8600888.html 这里写一下传递包装类参数: 一个POJO:U ...