下载此文档

oraclesql优化笔记.docx


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯精品 料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
?
?
?

基本的 Sql 编写注意事项
尽量少用 IN 操作符,基本上所有的 IN 操作符都可以用 EXISTS
代替。
不用 NOT IN操作符,可以用 NOT EXISTS或者外连接 +替代。
Oracle 在执行 IN 子查询时,首先执行子查询,将查询结果放
入临时表再执行主查询。而 EXIST则是首先检查主查询,然后运行
子查询直到找到第一个匹配项。 NOT EXISTS比 NOT IN效率稍高。
但具体在选择 IN 或 EXIST操作时,要根据主子表数据量大小来具
体考虑。
不用“ <>”或者“ != ”操作符。对不等于操作符的处理会造成全表扫描,可以用“ <” or “>”代替。
Where子句中出现 IS NULL 或者 IS NOT NULL时, Oracle 会停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置
为 NOT NULL。这样就可以用其他操作来取代判断 NULL的操作。
当通配符“ %”或者“ _”作为查询字符串的第一个字符时,索引不会被使用。
对于有连接的列“ || ”,最后一个连接列索引会无效。尽量避免连接,可以分开连接或者使用不作用在列上的函数替代。
如果索引不是基于函数的,那么当在 Where子句中对索引列使用函数时,索引不再起作用。
Where子句中避免在索引列上使用计算,否则将导致索引失效而进行全表扫描。
1
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯精品 料推荐⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
?
?
?

对数据类型不同的列进行比较时,会使索引失效。
用“ >=”替代“ >”。
UNION操作符会对结果进行筛选,消除重复,数据量大的情况
下可能会引起磁盘排序。 如果不需要删除重复记录, 应该使用 UNION
ALL。
Oracle 从下到上处理 Where子句中多个查询条件, 所以表连接语句应写在其他 Where条件前,可以过滤掉最大数量记录的条件必须写在 Where子句的末尾。
Oracle 从右到左处理 From子句中的表名, 所以在 From子句中
包含多个表的情况下,将记录最少的表放在最后。(只在采用RBO
优化时有效,下文详述)
?
?
?

Order By 语句中的非索引列会降低性能,可以通过添加索引的
方式处理。严格控制在 Order By 语句中使用表达式。
不同区域出现的相同的 Sql 语句,要保证查询字符完全相同,以利用 SGA共享池,防止相同的 Sql 语句被多次分析。
多利用内部函数提高 Sql

oraclesql优化笔记 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息