select * from table t where t.a >= to_date('2013-01-15 08:00', 'yyyy-mm-dd hh24:mi') or t.b >=to_date('2013-01-15 08:00', 'yyyy-mm-dd hh24:mi') 快于select * from table t where nvl(t.a,t.b) >= to_date('2013-01-15 08:00', 'yyyy-mm-dd hh24:mi')奇怪
解决方案 »
- 求11gR2安装以后,参数配置的问题,数据库采用主从架构,配好后主要面向网站应用,包括论坛、类似网上购物等。
- 可以不可以把建立的T_ADD114_3.DBF文件从D盘移动E盘啊?
- 如何获取发生异常的SQL语句?
- merge 的小问题 帮我看看谢谢
- exp ORA-06550
- 存储过程 声明 赋值 问题
- 请教开发过程中遇到的问题
- 怎样用一条SQL实现把组合的数据插入到多个表。如果不提供WHEN条件,就插入所有的表?
- 请问关于PHP连接Oracle存储过程的问题
- 能不能对于两个ORACLE数据库中结构相同的的两个表进行INSERT INTO...(SELECT..)操作??
- C#用ODP方式连接ORACLE11G
- sqlplus 如何直接从命令行传递一个参数给 ACCEPT 指令
想知道为什么快,看查询计划就可以了 有走索引的 有不走索引的 速度当然不一样
===================
在字段名称上使用函数不是一个好习惯,这会导致索引失效,除非有相应的函数索引。
如果nvl(t.a,t.b),这样的到的比如是t.a
就算a列有索引,在搜索的时候,也没用到索引吗?小弟,对数据库可以说是一清二白啊,忘赐教
SELECT STATEMENT, GOAL = ALL_ROWS 3 11 187
TABLE ACCESS FULL MW_APP MWT_GRADEINFO 3 11 187
这代表全表扫描
SELECT STATEMENT, GOAL = ALL_ROWS 1 1 17
TABLE ACCESS BY INDEX ROWID MW_APP MWT_GRADEINFO 1 1 17
INDEX UNIQUE SCAN MW_APP PK_MWT_GRADEINFO 0 1
这代表走索引
另外,where条件里,一般都是左边是字段名,右边是值或条件,尽量把计算和函数放到右边
比如 where a.col/5 > 3 的效率要低于 where a.col > 3*5