我有许多表的数据库(Oracle),例如:CLIENTS,PRODUCTS,OPERATIONS等。我想实现搜索器,这将允许我写一个短语'MA'并给出提示:
MA RIA客户
MA STERMIND产品
RE MA PPING操作
等...
如何实现?这样做的方法是什么?我应该创建另一个表所有名称(客户名称,产品名称,操作名称......)?或者只是在所有表中搜索,使用很多LIKE条件? 如何有效地做到这一点?
很多人认为我的问题是重复的,所以我想解释一下:我不是在寻找一次我想要使用的解决方案,我需要在一个生产环境中实现它,很多人会在那里搜索上面的信息。我知道我可以从dba_tables,dba_tab_columns视图创建动态sql,但我想准备有效的方法来做到这一点!在WHERE子句中使用LIKE将不使用索引,因此我将进行全表扫描 - 这在具有许多用户和大表的系统中不起作用。要知道我会考虑使用关键字列上的域索引创建表,并使用CONTAINS而不是LIKE,但也许你有另一个想法。也许另一个数据库引擎有可以帮助我的功能?
答案 0 :(得分:0)
阅读UNION和VIEW。您应该使用哪一个取决于您的数据库的大小和查询的复杂性。
答案 1 :(得分:0)
根据您的数据库大小,您可以使用view + union
或新表
另请检查Oracle Text
http://docs.oracle.com/cd/B28359_01/text.111/b28303/ind.htm#g1020588