2016-09-30 65 views
1

我有一張包含近百萬行的表。在其中搜索單個值需要5秒,在15秒內需要500個左右。這是相當長的時間。請讓我知道如何優化查詢?在谷歌bigQuery中查詢工作緩慢

我的查詢是:

select a,b,c,d from table where a in ('a1','a2') 

作業ID:穩定遠地點-119006:job_ClLDIUSdDLYA6tC2jfC5GxBXmv0

+0

爲什麼downvoted?我如何優化的任何答案? – hmims

+0

請閱讀此:http://stackoverflow.com/help/mcve。通過提供您正在嘗試運行的查詢幫助其他人幫助您。對於BigQuery工程師來說,擁有過去查詢的工作ID也可能會有所幫助。 –

+0

感謝您添加作業ID。除非有人打我,明天上午我會看看(太平洋時間)。 –

回答

0

我不知道你是什麼意思 「500需要15秒」,但我跑了一些測試對我們的數據庫試圖模擬你正在運行什麼,我有一些相似的結果你

(我的查詢速度慢,然後你的,因爲它有一個join操作,但仍然在這裏我們去):

SELECT 
    a.fv fv, 
    a.v v, 
    a.sku sku, 
    a.pp pp from(
    SELECT 
    fullvisitorid fv, 
    visitid v, 
    hits.product.productsku sku, 
    hits.page.pagepath pp 
    FROM (TABLE_DATE_RANGE([40663402.ga_sessions_], DATE_ADD(CURRENT_DATE(), -3, 'day'), DATE_ADD(CURRENT_DATE(), -3, 'day'))) 
    WHERE 
    1 = 1) a 
JOIN EACH (
    SELECT 
    fullvisitorid fv, 
    FROM (TABLE_DATE_RANGE([40663402.ga_sessions_], DATE_ADD(CURRENT_DATE(), -3, 'day'), DATE_ADD(CURRENT_DATE(), -3, 'day'))) 
    GROUP EACH BY 
    fv 
    LIMIT 
    1) b 
ON 
    a.fv = b.fv 

查詢僅僅一天,只帶一位全職人員花了約5秒時間處理1.7 GB的數據。

當我跑了上個月相同的查詢和刪除limit運營商花了〜10S處理〜數據的56GB(大約33萬行):

enter image description here

這是出奇的快。

因此,您可能必須評估您的項目規格。如果5秒對你來說仍然太多,那麼也許你需要在你的架構中找到最適合你的其他策略。

BigQuery確實需要幾秒鐘來處理它的需求,但它也可以在幾秒鐘內處理數百個Gigas。

如果您的項目數據消耗預計會增長,並且您將開始處理數百萬行,那麼您可以評估在應用程序中等待幾秒鐘是否仍然可以接受。

除此之外,就您的查詢而言,我認爲還沒有太多的優化來提高其性能。

PS:我決定把100天運行,並且在14秒處理大約100個GBS)