最近遇到这样的问题:
select *
from table_A
where a>10 and b='Good' and functionInvoke('test')='Y'
functionInvoke 是一个定义好的function.现在有个疑问是:
如果总纪录有1000条
where a>10 and b='Good' 能够查询出200条 那么functionInvoke的调用是在这200条的基础上还是在1000条的基础上呢?
据说这类function的调用是针对全局的,不知道各位有何高见?
select *
from table_A
where a>10 and b='Good' and functionInvoke('test')='Y'
functionInvoke 是一个定义好的function.现在有个疑问是:
如果总纪录有1000条
where a>10 and b='Good' 能够查询出200条 那么functionInvoke的调用是在这200条的基础上还是在1000条的基础上呢?
据说这类function的调用是针对全局的,不知道各位有何高见?
解决方案 »
- 存储过程请教
- MSSQL2008跟ORacle11G哪个强大?论MSSQL转Oracle的必要性!~
- 救急!求一个查询时间sql语句
- 十万火急:如何在动态语句中使用表名的变量?
- 怎样写语句导出某个table的 CREATE TABLE 的语句啊?
- oracle management server怎么安装?
- oracle新手安装问题
- 请教关于游标变量的问题
- 急问一问题,不胜感激
- 怎么获得当前系统日期之前,但是仍在本年的月份?
- 普通用户在使用grant select any table to username的时候提示权限不足
- 高手们,帮忙啊 oracle 9.2.0.1.0 imp 出错 IMP-00058: 遇到 ORACLE 错误 600
a>10 and b='Good'
一旦有一个为false,就返回了。
也就是说: 至少200
就是说function不会不理会前面两个条件而去做全局的查询?
看执行计划
先运行
set autotrace on或者set autotrace on explain不过对于函数无法给正确给出执行计划的
不过后面的会不会以前面的为基础,就不清楚了
跟and c='Y'(假设的)
逻辑上是一样的啊
所以当然是200条,这跟函数不函数的没有关系。