如何为动态搜索字符串创建索引

nev*_*ind 4 sql oracle indexing plsql

我有一个小DB,仅用于学术目的,我最多有对象表.我在Power Designer中创建了一个实体关系模型(ERM),默认情况下,程序为每个表创建序列ID的索引.

  1. 我想知道如何在查询中使用这样的索引.我希望通过其id找到一个产品,但是使用它的索引.
  2. 是否可以select value(s) from supplierf where s.name LIKE '%search%' order by s.name 使用索引进行类似的搜索?我知道可以为名称创建索引,但对于像这样的搜索,我不知道它是如何工作的.

让我说,我确实知道Oracle决定何时或是否值得在查询中使用索引,但我可能必须至少尝试在我的BD项目中使用索引

Pet*_*ang 6

1.通过将列定义为PRIMARY KEY(这是您的id列最可能的列),Oracle隐含地为此列创建索引.当你有一个select时,它很可能会决定使用那个索引WHERE id=123.您可以在查询中提供一个提示,以使Oracle使用索引(在大多数情况下),但这对您来说不是必需的.

2. Oracle不太可能使用索引LIKE(除非您知道文本以搜索到的字符串开头,并且您可以使用'xyz%').有关何时以及如何使用索引进行全表扫描的详细信息,请参阅Tony Andrews的帖子.

有关使用文本索引进行Oracle LIKE子句搜索的文章应该提供有关处理全文搜索的方法的信息.