数据库优化方案.pdfVIP

  • 5
  • 0
  • 约1.07万字
  • 约 7页
  • 2020-09-07 发布于天津
  • 举报
. 数据库优化方案 1. 高效地进行 SQL语句设计: 通常情况下,可以采用下面的方法优化 SQL对数据操作的表现: (1)减少对数据库的查询次数,即减少对系统资源的请求,使用快照和显形图等分布式数 据库对象可以减少对数据库的查询次数。 (2 )尽量使用相同的或非常类似的 SQL语句进行查询,这样不仅充分利用 SQL共享池中的 已经分析的语法树,要查询的数据在 SGA 中命中的可能性也会大大增加。 (3 )避免不带任何条件的 SQL语句的执行。没有任何条件的 SQL语句在执行时,通常要进 行 FTS,数据库先定位一个数据块,然后按顺序依次查找其它数据,对于大型表这将是一个 漫长的过程。 (4 )如果对有些表中的数据有约束,最好在建表的 SQL语句用描述完整性来实现,而不是 用 SQL程序中实现。 一、操作符优化: 1、IN 操作符 用 IN 写出来的 SQL的优点是比较容易写及清晰易懂, 这比较适合现代软件开发的风格。 但是用 IN 的 SQL性能总是比较低的,从 Oracle 执行的步骤来分析用 IN 的 SQL与不用 IN 的 SQL有以下区别: ORACLE试图将其转换成多个表的连接, 如果转换不成功则先执行 IN 里面的子查询, 再 查询外层的表记录, 如果转换成功则直接采用多个表的连接方式查询。 由此可见用 IN 的 SQL 至少多了一个转换的过程。 一般的 SQL都可以转换成功, 但对于含有分组统计等方面的 SQL 就不能转换了。在业务密集的 SQL当中尽量不采用 IN 操作符。 优化 sql 时,经常碰到使用 in 的语句,一定要用 exists 把它给换掉,因为 Oracle 在处理 In 时是按 Or 的方式做的,即使使用了索引也会很慢。 2 、 NOT IN 操作符 强列推荐不使用的,因为它不能应用表的索引。用 NOT EXISTS或(外连接 +判断为空) 方案代替 3 、IS NULL或 IS NOT NULL操作 判断字段是否为空一般是不会应用索引的,因为 B 树索引是不索引空值的。 用其它相同功能的操作运算代替, a is not null 改为 a0 或 a ’’等。 不允许字段为空, 而用一个缺省值代替空值, 如业扩申请中状态字段不允许为空, 缺省 为申请。 避免在索引列上使用 IS NULL 和 IS NOT NULL 避免在索引中使用任何可以为空的列, ORACLE将无法使用该索引.对于单列索引,如果列包含空值,索引中将不存在此记录 .对于 复合索引,如果每个列都为空,索引中同样不存在此记录 .如果至少有一个列不为空,则记 录存在于索引中.举例 :如果唯一性索引建立在表的 A 列和 B 列上 ,并且表中存在一条记录 的 A,B 值为 (123,null) , ORACLE 将不接受下一条具有相同 A,B 值( 123,null )的记录 (插入 ).然 而如果所有的索引列都为空, ORACLE 将认为整个键值为空而空不等于空 .因此你可以插入 1000 条具有相同键值的记录 ,当然它们都是空 !因为空值不存在于索引列中 ,所以 WHERE 子 .

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档