Redshift-IN子句中的参数使查询重新编译

时间:2018-12-12 05:58:44

标签: amazon-redshift

我有一个带有IN子句的过滤器,该过滤器将从查询中的用户选择中获取CustomerID。我正在对查询执行进行基准测试,似乎是通过更改no来进行的。 redshift的IN子句中的参数设置会导致重新编译查询。在IN子句中更改参数后,随后的查询运行将比前一次运行花费更多时间。

select * -- some aggregations here from FactCustomer c inner join FactSales s on c.CustomerID = s.CustomerId inner join DimDate d on d.DateID = s.DateID inner join DimTime t on t.TimeID = d.timeID where d.SalesDate between '01-01-2018' and '12-31-2018' and c.CustomerID in ( 1,3,7,9, 11, 13, 15, 17, 19, 21, 23, 25, 27 ) -- there are over 200 customers and the user can select as much as they want in the filter -- the customerIDs comes from the user dyamically thru the dashboard -- if the no. of parameters in customerID change to less or more the subsequent queries take time

我的问题

Redshift中的另一种选择是什么,这样我就可以从用户中获取可在查询中使用的customerId,而无需使用IN子句?

P.S。在我的情况下,不能使用临时表。

任何见解表示赞赏。

此致

成功

0 个答案:

没有答案