为什么 Oracle 连接到 HANA 使用绑定变量工作得更快

Why Oracle connection to HANA works much faster with bind variables

我们在从 Oracle 到 SAP HANA 的连接(通过 Oracle Gateway)时遇到问题。在立即执行中使用绑定变量时,SQL 的运行速度比执行标准 SQL 时快得多。

F.e.:

select count (1) from SYNONYM_TO_HANA_TABLE where field='1234';

经过时间:96.808 秒

    declare
v_test number;
begin
execute immediate 'select count (1) from SYNONYM_TO_HANA_TABLE where field= :a'   into v_test using '1234';
dbms_output.put_line('return: ' || v_test);
end;
/

经过时间:0.179 秒

基本上两个 SQL returns 相同的结果,但也许有人能够解释为什么执行时间之间存在如此大的差异。谢谢!

彼得

弄清楚这些查询做了什么。 第一步可以是比较执行计划。

select /* my_query1 */  count(1) from SYNONYM_TO_HANA_TABLE ;

declare
begin
  execute immediate 'select  /* my_query2 */ count(1) from SYNONYM_TO_HANA_TABLE ';
end;
/

select sql_id,sql_text from v$sql where sql_text like '%my_quere%' ; 


select * from table(dbms_xplan.display_cursor('sql_id',0,'ALL'));