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