Ну, наверное, ни лучше.Ни одно из этих условий не использует имена столбцов, поэтому это сфабриковано .Если бы это было, например,
where substr(username, 1, 4) = substr('JASON', 1, 4)
or
where rpad(username, 15, 'x') = 'JASONxxxxxxxxxx'
, то они оба не смогли бы использовать возможный индекс для столбца USERNAME
- вы должны создать индекс на основе функции в таком случае.
Какой из них будет работать быстрее?Кто знает;Вы должны измерить это.Первым шагом является проверка плана объяснения, например
SQL> select * from emp where ename = 'KING';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7839 KING PRESIDENT 17.11.81 10000 10
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 39 | 3 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| EMP | 1 | 39 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("ENAME"='KING')
SQL>