or的机制是顺序找所有条件,一旦有一个条件满足,后面的条件都不会执行。
CREATE FUNCTION F_CUX_TEST_FUNC RETURN NUMBER IS
BEGIN
dbms_output.put_line (1111);
RETURN 1;
END;
select sysdate from dual where 1=1 OR F_CUX_TEST_FUNC=1;
执行上面sql后会发现,并不会输出1111.
由于or条件前面的1=1已经是true,所以后面的条件不会再执行。所以平常写查询语句时,如果where条件里面有多个or条件,尽量把查询速度快,容易满足的条件放在最前面,这样查询性能会提高一些