Chỉ cần sử dụng coalesce
. Đây là cách dễ đọc và dễ hiểu nhất để viết điều này. Vì logic được chứa trong một vị từ, nên việc duy trì và loại bỏ dễ dàng hơn:
select * from job where id = coalesce(:i, id)
Theo yêu cầu, một 'bằng chứng' này thực sự sử dụng chỉ mục:
create table x ( id number(15) null );
create unique index x_pk on x( id );
select id
from x
where id = coalesce(:x, id)
; -- Uses index
select id
from x
where id = :x or :x is null
; -- Full table scan
Kế hoạch: