Ну вот, например, какой сюрприз в 11.2.0.2 обнаружили:
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.2.0
Connected as deev
SQL> create table drop_me(email1 varchar2(250), flag1 number, email2 varchar2(250), flag2 number);
Table created
SQL> create index drop_me#email1 on drop_me(case when flag1 = 1 then email1 end);
Index created
SQL> create index drop_me#email2 on drop_me(case when flag2 = 1 then email2 end);
Index created
SQL>
SQL> insert into drop_me
2 select 'test_'||level||'@mail.ru', 1, 'test_'||level||'@yandex.ru', 1
3 from dual connect by level <= 1000;
1000 rows inserted
SQL> select count(*)
2 from drop_me
3 where (case when flag1 = 1 then email1 end) like 'test_1@mail.ru'
4 or (case when flag2 = 1 then email2 end) like 'test_1@yandex.ru';
COUNT(*)
----------
0
SQL> select /*+ NO_EXPAND */ count(*)
2 from drop_me
3 where (case when flag1 = 1 then email1 end) like 'test_1@mail.ru'
4 or (case when flag2 = 1 then email2 end) like 'test_1@yandex.ru';
COUNT(*)
----------
1
Т.е. конкатенация с функц. индексами глючит конкретно. По крайней мере, в этом случае.