我在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_1
和table_2
之间连接,并执行一些数据操作,聚合并将它们插入table_4
。
表_4
id | textcolumn
---+---------------------------------
1 | value1 value2 value3 .. value100
型textcolumn
包含table_1
和table_2
中的所有列值作为文本值。
此列将在LIKE %查询中用于对所有列值执行文本搜索并返回ID。
我还有两个调度程序,分别每5秒和3分钟调用同步索引和优化textcolumn
索引。
目前表_4包含约800 K的数据,我需要对当前解决方案提出建议/改进/新技术。
1条答案
按热度按时间bttbmeg01#
您不需要复制数据来对其进行索引。可以配置文本索引,以便被索引的内容仅在索引中,而不在保存真实的表副本的“全局”表中。
就目前的情况而言,我对你的描述的阅读表明数据的三个副本:
你不需要第二个。
这里有一个关于如何做用户数据存储索引的指南,以便在数据库中的多个表之间给予“类似Google”的搜索
https://youtu.be/yjEdL_DX5dU
在23c,将有本地设施,使这更容易。