我需要重写OBIEE所做的一些查询
我需要更改绑定变量中的所有文字值,但我没有找到如何使用绑定变量
有人能帮我吗?
谢谢
发布于 2014-06-17 11:53:28
First,一个语句:
如果在OBIEE中使用ADF (Oracle应用程序开发框架),则ADF层中有一个设置,允许我们指定如何处理在VOs上激发的查询中使用的View条件和WHERE子句。
默认情况下,在adf-config.xml中将useBindVarsForViewCriteriaLiterals设置为"False"。如果此设置为False,则ADF将生成带有视图条件文字的SQL,这可能导致数据库共享池区域中的争用。如果我们将adf-config.xml中的设置更改为"True",则ADF将为所有视图准则生成带有绑定变量的SQL。
但是,对于BI (OBIEE),不应该更改此设置,因为BI不支持查询中的绑定变量。如果我们看到任何在OBIEE查询/报告中使用绑定变量的查询(或相关日志),则可能是由于上述设置。
对于BI,此设置应保留为默认值,即"False"
快速回答:似乎无法使用绑定变量来代替文字。
现在,对绑定变量的限制背后的推理:
在数据仓库中,它们不是每秒运行1000条语句,而是执行类似于平均100秒的操作来运行单个查询。在这些系统中,查询很少,但是很大(它们会问很多问题)。在这里,解析时间的开销是整个执行时间的一小部分。即使您有成千上万的用户,他们也不是在后面等待解析查询,而是等待查询得到答案。
在这些系统中,使用绑定变量可能会适得其反。在这里,查询的运行时间很长--以秒、分钟、小时或更长为单位。目标是获得最佳的查询优化计划,以减少运行时,而不是执行尽可能多的OLTP,十分之一的查询。由于优化器的目标不同,规则也会发生变化。
有时,使用bind变量会迫使优化器提出最好的通用计划,这实际上可能是特定查询的最差计划。在查询执行需要相当长时间的系统中,绑定变量删除优化器可能会提出的高级计划所需的信息。事实上,一些特定于数据仓库的特性是通过使用绑定变量来克服的.例如,Oracle支持数据仓库的星型转换功能,它可以大大减少查询所需的时间。但是,排除星型转换的一个限制是有包含绑定变量的查询。
https://stackoverflow.com/questions/24241085
复制相似问题