首页 / ORACLE / Oracle 学习笔记(四)
Oracle 学习笔记(四)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle 学习笔记(四),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2731字,纯文字阅读大概需要4分钟。
内容图文
![Oracle 学习笔记(四)](/upload/InfoBanner/zyjiaocheng/490/8dd1c601f82b4edc95cd6b70d2af8511.jpg)
- 在where 中用 = 关系运算时
- 避免用函数在关系运算中,除非你使用函数建立索引
- 尽量不要隐式转化数据类型,数据类型一定要匹配
- 尽量将一句SQL分成多个语句完成
- 不能差分的请用UNION ALL 来组合
- 条件确定的子查询 Exist 适合于外表小,内表大 in 适合于外表大,内表小
- 使用视图的注意事项
- 复杂视图的连接要小心,尤其有外键的时候
- 当查询的是视图中引用的部分表的时候,请不要使用视图,或者建立新的更小的表
- 存储中间结果
- 对查询中可能多次调用的结果集,请保存
- 考虑使用物化视图
- 将复杂的不能优化的查询分阶段完成
- 尽量减少访问数据的次数
- 使用 case 语句
- 使用高级分组rollup,cube
- 使用存储过程
- 使用 RETURNING 子句
二、全表扫描
- 全表扫描:将高水位线下的数据块都读一遍。
- DB_FILE_MULTIBLOCK_READ_COUNT 参数决定扫描的速度,该参数的值乘以块的
- 大小应该小于操作系统的最大io
- 因为范围是连续的块,所以全表扫描会连续的读,效率很高
三、何时会使用全表扫描
1.表小
2.索引缺少,条件判定列上没有索引
3.使用hint,强制使用全表扫描
4.读的数据比重大。一般超过 10%的数据要读取就会选择全表扫描
5.并行查询,和索引是对立的,两者必须选择一个
四、全表扫描的优化
1.回收高水位线
2.DB_FILE_MULTIBLOCK_READ_COUNT 加大
3.使每个块装的数据更多,减少 pctfree
4.使用并行查询
alter system set db_file_multiblock_read_count=32;修改参数配置,默认为16 个块
alter table t1 pctfree 0; 将每个数据块都装满
alter table t1 move tablespace users; 移动表空间
五、 数据库查询的优化,Hints
Hints,即提示,强制该语句以我们指定的方式运行,作用范围是当前语句,对后面语句不影响。书写时,一定要放在第一个单词(select) 的后面。Hints 的写法有两种: /*+ 提示 */ , --+ 提示
六、SQL 查询优化
1.尽量避免在一个复杂查询里面使用 LIKE ‘%parm1%‘ 百分号会导致相关列的索引无法使用,最好不要用.
-
- 在前端进行下拉框的输入搜索
- 在后端进行查询范围控制,不查询无关数据
2. 索引
-
- 数据量大的时候,建立索引
- 避免对索引进行计算操作
- 避免在索引列上使用 not, <>, !=
- .避免在索引列上使用 is null 和 is not null
- 避免在索引列上使用数据类型转换
- .避免在索引列上使用函数
- 避免在索引列上使用空值
3. 复杂查询 可将复杂查询进行拆分,分步进行
4. 尽量使用 union all union 会对数据进行排序,并去除重复的行,比较消耗资源 union all 则不进行排序,不去除重复的行
5. 在where 语句中合理使用 in , not in ,exist,not exist Exist 适合于外表小,内表大 in 适合于外表大,内表小
6. 排序 避免使用消耗资源的操作,带有 distinct, uinon,minus,intersect,order by 的语句 会启动 sql 引擎,distinct 需要一次排序,而其它至少需要执行2次排序。
7. 临时表 慎重使用临时表,可以极大的提高性能。
Oracle 学习笔记(四)
标签:高效 use ctf 重复 ble 存储过程 个数 sql 语句 不能
本文系统来源:http://www.cnblogs.com/wisdo/p/7439816.html
内容总结
以上是互联网集市为您收集整理的Oracle 学习笔记(四)全部内容,希望文章能够帮你解决Oracle 学习笔记(四)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。