怎么写查询速度快? type列有 1,2,3 三个值,无索引。现需要卡1,2取数,三种写法:第一种:type<>3第二种:type in (1,2)第三种:type=1 or type=2哪种写法查询快?为什么?菜鸟求问简单问题,望不吝赐教,若有更优的写法请说明。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般说来 查询花费时间由大到小排序 2 > 3 > 1 2和3 时间差距特别小 因为模式是差不多的 oracle中通常都会把or转换成in来查询 具体的时间 要看执行计划了 可能有其他方面的影响 在CBO的模式下,2和3会转化成同样的路径(11g环境) 中间用union all连接select count(*) from ( select * from 表名 where type=1 union allselect * from 表名 where type=2 ) 如果1经常被读到第三种:type=1 or type=2这是比较快的type=2优化器是不会再去进行逻辑判断 可自己去看oracle的执行计划,查询速度的效率,关键是查是否用到索引,索引查询效率比较高 也是 set autot traceonly看看执行计划如果只有这个查询或者说这个比较常用 不妨物化它,直接查询重写,建个mv 如果该列只有三个值而且表很大的话,可以考虑建立Bitmap索引查询。 然后查询条件改成>=2 或 <3 --大家过来帮我看一看:自动生成公司发票号,这样设计合理吗?-- Oracle Date自动转型的问题 你牛,你就来留下你的牛印! oracle当中的异常处理问题 向高手求救一个材料分解问题,急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 安装oracle9i的问题 关于oracle数据移植的问题(高分)。 请教:oracle触发器如何实现只其中一个字段的值从2改成3时才触发? 关于表空间的一些问题 怎样连接和断开oracle数据库 oracle sql动态执行问题(动态表名) oracle游标问题
select count(*) from
( select * from 表名 where type=1
union all
select * from 表名 where type=2 )
第三种:type=1 or type=2
这是比较快的
type=2优化器是不会再去进行逻辑判断
如果只有这个查询或者说这个比较常用 不妨物化它,直接查询重写,建个mv