我正在 Oracle Apex 上开发一个应用程序,通过 Oracle Text 在表格上进行全文搜索。应用程序有这样的查询:
select task_id, ...
from vhd_tasks
where contains(hw_sn, :P5)>0
在这种情况下,文本索引工作正常,如果 :P5 不为空,因为它使用域索引
| 60 | TABLE ACCESS BY INDEX ROWID| HD_TASKS | 1257 | 326K| 322 (0)| 00:00:04 |
|* 61 | DOMAIN INDEX | CTX_HD_TASKS | | | 4 (0)| 00:00:01 |
但是当搜索字符串未填充到:P5 时,我不知道如何更改我的查询以处理:P5 中的空值。我试过这个查询
select task_id, ...
from vhd_tasks
where ( case when :P5 is not null then contains(hw_sn, :P5, 1)
else 1 end)>0
不幸的是,在这种情况下性能会急剧下降。知道如何处理 CONTAINS 函数中的空值吗?