oracle sql中数据库文本搜索设计的改进

cczfrluj  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(104)

我在oracle的遗留应用程序中有以下设计,用于跨表列的文本搜索。需要对该解决方案提出建议/改进/新方法技术。
我有以下带列的表
表1

id | column_1 | column_2 | column_3 .... column_40
---+----------+----------+-------------------------- 
1  | value1   | value2   | value3

字符串
表2

id | column_1 |... column_50
---+----------+-------------
1  | value11  |... value55


这两个表具有相同的id和触发器,该触发器在任何更改时运行,并将Id插入table_3
table_3只包含id列。

id
---
1


我有一个DB调度程序,每5秒检查一次table_3上的新行。如果它找到记录,则获取id并在table_1table_2之间连接,并执行一些数据操作,聚合并将它们插入table_4
表_4

id | textcolumn 
---+---------------------------------
1  | value1 value2 value3 .. value100


textcolumn包含table_1table_2中的所有列值作为文本值。
此列将在LIKE %查询中用于对所有列值执行文本搜索并返回ID。
我还有两个调度程序,分别每5秒和3分钟调用同步索引和优化textcolumn索引。
目前表_4包含约800 K的数据,我需要对当前解决方案提出建议/改进/新技术。

bttbmeg0

bttbmeg01#

您不需要复制数据来对其进行索引。可以配置文本索引,以便被索引的内容仅在索引中,而不在保存真实的表副本的“全局”表中。
就目前的情况而言,我对你的描述的阅读表明数据的三个副本:

  • 原始表
  • 大表中包含数据的副本,然后使用文本索引对其进行索引
  • 文本索引本身

你不需要第二个。
这里有一个关于如何做用户数据存储索引的指南,以便在数据库中的多个表之间给予“类似Google”的搜索
https://youtu.be/yjEdL_DX5dU
在23c,将有本地设施,使这更容易。

相关问题