2013-01-07 29 views
1

这相对于在表在PL/SQL搜索/的Oracle Forms

表名来搜索文本: 详细

列: FNAME,MNAME,LNAME,n名称

这表中包含了近十万条记录

我们使用的是Oracle的形式对一些查询选项

用户输入一个名称,表格在表格中搜索名称,并根据名称(Fname/Mname/Lname/NName)在其列中出现进一步的操作。

由于表中存在大量数据,因此搜索需要很长时间。

我与表而T3函数索引试过没有工作也其花费更多的时间

后来我试着用这样的 串接所有的名字到一个名字,并把它变成一个游标。 使用游标输出,我尝试使用Instring,但它是挂

我也试图寻找建立一个动态光标,但它没有奏效。

我的数据库是Oracle

u能帮助我去寻找有效的解决办法还是请大家帮我,如果我错过了一些东西。

谢谢

回答

0

首先,10万(100,000)记录本身并不是一张大桌子。

我可以看到的问题是查询似乎是在对Fname/Mname/Lname/NName列进行OR操作。 这意味着查询将至少执行一次全表扫描以获取结果。 您可能希望使用调试来获取它针对数据库触发的查询,并尝试使用自动跟踪在SQL提示符处对此进行调优。

您可能需要澄清一下,搜索是否也在对这些列进行类似LIKE的操作而不是EQUALS。由于LIKE会进一步影响查询并影响索引。

当然,使用INSTR会禁用搜索列中的索引。

目前还不清楚你的块是基于什么。表,视图,查询,过程

您可能想尝试在窗体FIRST_ROWS的块属性上使用提示。

+0

是的搜索使用喜欢的语句 我的块是基于 表格内的程序是的我会尝试使用FIRST_ROWS和更新,如果它帮助我 –