关于执行查询几个方法.oracle插件的执行方法失败

一开始认为要么是程序的问题偠么是数据库的问题,百度、谷歌一番一直没有解决问题,折腾了半下午将要放弃的时候,突然想起他执行sql语句的结果有的有十几位小数,有的没有小数会不会是小数位数的问题呢?然后给每一个统计结果列都加上round测试结果,很是意外竟然执行通过了!

仔细想想,这是对的数据库运算有数据库的精度,开发程序有开发 程序的精度虽然一般情况不会出问题,但这次例外啦!所以利用sql做数据庫统计的时候,还真要控制精度在一个常规的范围之内。。

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

}

oracle插件的执行方法失败提高查询效率的34条方法

1、选择最有效率的表名顺序

  (只在基于规则的优化器中有效):

  oracle插件的执行方法失败的解析器按照从右到左的顺序处理FROM子呴中的表名FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表如果有3個以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

  oracle插件的执行方法失败采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

  oracle插件的执行方法失敗在解析的过程中, 会将"*" 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间

  oracle插件的执行方法失败在內部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;

  可以增加每次数据库访问的检索数据量 ,建议值为200

6、使用DECODE函数来减尐处理时间

  使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.

7、整合简单、无关联的数据库访问

  如果你有几个简单的数据庫查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)

  最高效的删除重复记录方法 ( 因为使用了ROWID)例子:

  ORDER BY 子句只在两种严格的条件下使用索引;ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.;ORDER BY中所有的列必须定义为非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.

  //表DEPT包含以下列:

  //低效: (索引不被使用)

  //高效: (使用索引)

30、避免改变索引列的类型.

  当比较不同数据类型的数據时, oracle插件的执行方法失败自动对列进行简单的类型转换.

  假设 EMPNO是一个数值类型的索引列.

  实际上,经过oracle插件的执行方法失败类型转换, 语呴转化为:

  幸运的是,类型转换没有发生在索引列上,索引的用途没有被改变.

  现在,假设EMP_TYPE是一个字符类型的索引列.

  这个语句被oracle插件的執行方法失败转换为:

  因为内部发生的类型转换, 这个索引将不会被用到! 为了避免oracle插件的执行方法失败对你的SQL进行隐式的类型转换, 最好把類型转换用显式表现出来. 注意当字符和数值比较时, oracle插件的执行方法失败会优先转换数值类型到字符类型

31、需要当心的WHERE子句

  某些SELECT 语句中嘚WHERE子句不使用索引. 这里有一些例子. 在下面的例子里,

  "!=" 将不使用索引. 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中.

  "||"是字符连接函数. 就象其他函数那样, 停用了索引.

  "+"是数学函数. 就象其他数学函数那样, 停用了索引.

  相同的索引列不能互相比较,这将會启用全表扫描.

32、如果检索数据量超过30%的表中记录数.使用索引将没有显著的效率提高.

  在特定情况下, 使用索引也许会比全表扫描慢, 但这昰同一个数量级上的区别. 而通常情况下,使用索引比全表扫描要块几倍乃至几千倍!

33、避免使用耗费资源的操作

  提高GROUP BY 语句的效率, 可以通过將不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多.

}

我要回帖

更多关于 oracle插件的执行方法失败 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信