2016-04-28 53 views
0

这个简单的查询是时间,任何想法如何使用一些BigQuery技巧来优化它?谷歌Bigquery选择超时与简单的连接

SELECT 
s.typeFlight s_type, r.distance, r.price, (d.booking_token IS NULL) clicked 
FROM [search.searches] s 
LEFT JOIN [search.search_results] r ON r.searchid=s.searchid 
LEFT JOIN [search.clicks] d ON d.booking_token=r.booking_token 
WHERE s.saved_at BETWEEN TIMESTAMP('2016-03-01 00:00:00') 
AND TIMESTAMP('2016-03-05 00:00:00') 

查询设置

  • 查询优先级
  • 目标表斗-984:search.result
  • 写偏好覆盖表
  • 允许较大的结果真正

的数据来自于搜索引擎,所以表点击小(在百万行),但该表搜索search_results是巨大的。查询处理大约5 TB的数据。

回答

0

你可以推,其中渗透到第一选择,以便有较少的数据加入:

SELECT 
s.typeFlight s.type, r.distance, r.price, (d.booking_token IS NULL) clicked 
FROM (
    SELECT typeFlight, type, searchid 
    FROM [search.searches] 
    WHERE saved_at BETWEEN TIMESTAMP('2016-03-01 00:00:00') 
    AND TIMESTAMP('2016-03-05 00:00:00') 
) s 
LEFT JOIN [search.search_results] r ON r.searchid=s.searchid 
LEFT JOIN [search.clicks] d ON d.booking_token=r.booking_token 

有时是有帮助的看查询计划说明https://cloud.google.com/bigquery/query-plan-explanation,看看您的查询花费的时间。

+0

它仍在计时。 –