【发布时间】:2021-11-28 07:26:05
【问题描述】:
让我们采取以下措施:
用于此的伪 sql 将是:
SELECT
Name,
Age,
VLOOKUP(Name, OtherTable, Letter)
FROM
Table
我认为将其编写为函数的低效方式类似于以下标量子选择:
VLOOKUP(TargetTable, TargetLookupField, TargetLookupValue, TargetReturnValue)
--> SELECT TargetReturnValue FROM TargetTable WHERE TargetLookupField=TargetLookupValue
进行查询重写以将标量子选择下推为联接是否有更好的方法?这是查询重写中的常用技术吗? BigQuery(或任何其他 RDBMS)是否足够聪明,能够检测到这一点并能够自行完成?
【问题讨论】:
-
不确定这是否是您的要求,但 DBMS 具有查询优化器,它们会重写传递给它的 SQL,以便以它可以确定的最有效方式执行它
-
我相信他确实知道。 @david542,我想我将不得不掸掉我的 Access 副本,看看解释对 DLOOKUP 的说明(如果访问甚至有解释)
-
例如,您可以使用
right join定义vlookup。但我认为您不能在参数中发送表名。您在询问优化,比较标量子选择和连接,执行时间会有所不同,我想在这种情况下查询不会自动优化。这是你要求的吗? -
@ewertonvsilva 它将是一个
left join,从数据表到查找。否则就没有意义了。
标签: sql google-bigquery