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位系统支持不好,网上有各种各样的配置教程,我尝试了很多 ...
随机推荐
- DataTable调整顺序
DataTable中手动调整列的顺序 DataTable中手动调整列的顺序(列序,reorder,Rearrange)DataTable dt = new DataTable(); dt.Column ...
- 《Linux就该这么学》第十八天课程
1.使用MariaDB数据库管理系统 今天没什么笔记,就不发了.想深入学习的可以前往原创地址:https://www.linuxprobe.com/chapter-18.html 图18-1 Mari ...
- web端代码提示
web端代码提示 这个功能是基本完成了,但是与需求不一致.但是废弃挺可惜的,所以就单独拿出来作为一个例子记录一下. 其中还包括了,java代码的自动编译和执行,在web端显示执行结果. 下载链接: h ...
- 在香港用什么软件可以唱歌?香港K歌app推荐
KTV的源头来自于日本,KTV是Karaok TV的缩写.随着互联网时代越来越发达,手机K歌成了很多人会选择的方式,那么在香港有什么好用的K歌软件呢?这里qt6小编给大家推荐几款好用的,让你足不出户即 ...
- 挑选队友 (生成函数 + FFT + 分治)
链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 题目描述 Applese打开了m个QQ群,向群友们发出了组队的邀请.作为网红选手,Applese ...
- XSSearch 说明文档保存
XSSearch All Packages | 属性 | 方法(函数) 包 XS 继承关系 class XSSearch » XSServer » XSComponent 版本 1.0.0 源代码 s ...
- mycat跟踪分析
mycat版本1.6 192.168.5.66 从 192.168.5.67主 一个user表 验证主从 log4j2修改日志level为debug schema.xml配置 启动服务,打开日志tai ...
- RSA 前段加密 java 后台解密 已调试通过
本人整理网上的.好多网上的调不通.在这里把调试好的贴出来. 1. 异步获取公钥(后台获取):你也可以将公钥串写在页面上: var publicKey = null; $.ajax({ url: c ...
- 第十一章 DNS服务器管理与配置
1.如何在WindowsServer 2008 系统中使用IIS进行多站点配置与管理? 1)运行“开始”–“程序”–“管理工具”–“服务器管理器”打开: 选择“WEB服务器(IIS)”,注意:首次安装 ...
- Redis-03.事务
Redis事务: 在一个队列(queue)中依次执行一系列的命令. 事务的三个阶段: 1.开始事务(MULTI) 2.命令加入队列 (QUEUE) 3.执行事务 (EXEC) 示例1: MULTI & ...