0

我正在使用 oracle_fdw 2.2.0devel、PostgreSQL 10.13、Oracle 客户端 18.3.0.0.0

我们在 Postgres 中有一个外表定义如下:

CREATE FOREIGN TABLE public.tickers
(
   ticker_id         INTEGER,
   ticker            VARCHAR,
)
SERVER oracle
OPTIONS (table 'TICKERS', schema 'COMMENTARY', readonly 'true');

这是作为 12c SE 数据库连接的。这很好用,但是,我注意到 Oracle 中的查询实际上是这样的:

SELECT  
   /*618157932326e692807010156f98ddac*/  
   r2."TICKER_ID",  
   r2."TICKER"  
FROM "COMMENTARY"."TICKERS" r2  
WHERE (upper(r2."TICKER") = upper(:p1))

为什么它会自动添加“UPPER”子句?这会减慢 Oracle 查询并且不使用索引,除非我使用“upper”创建 FBI。

想知道是否有一些我应该禁用的选项.......

4

1 回答 1

0

oracle_fdw 生成使用该upper函数的 Oracle 查询的唯一方法是原始 PostgreSQL 查询已经包含upper在其中。

于 2022-02-08T20:35:39.667 回答