我有一張包含近百萬行的表。在其中搜索單個值需要5秒,在15秒內需要500個左右。這是相當長的時間。請讓我知道如何優化查詢?在谷歌bigQuery中查詢工作緩慢
我的查詢是:
select a,b,c,d from table where a in ('a1','a2')
作業ID:穩定遠地點-119006:job_ClLDIUSdDLYA6tC2jfC5GxBXmv0
我有一張包含近百萬行的表。在其中搜索單個值需要5秒,在15秒內需要500個左右。這是相當長的時間。請讓我知道如何優化查詢?在谷歌bigQuery中查詢工作緩慢
我的查詢是:
select a,b,c,d from table where a in ('a1','a2')
作業ID:穩定遠地點-119006:job_ClLDIUSdDLYA6tC2jfC5GxBXmv0
我不知道你是什麼意思 「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萬行):
這是出奇的快。
因此,您可能必須評估您的項目規格。如果5秒對你來說仍然太多,那麼也許你需要在你的架構中找到最適合你的其他策略。
BigQuery確實需要幾秒鐘來處理它的需求,但它也可以在幾秒鐘內處理數百個Gigas。
如果您的項目數據消耗預計會增長,並且您將開始處理數百萬行,那麼您可以評估在應用程序中等待幾秒鐘是否仍然可以接受。
除此之外,就您的查詢而言,我認爲還沒有太多的優化來提高其性能。
(PS:我決定把100天運行,並且在14秒處理大約100個GBS)
爲什麼downvoted?我如何優化的任何答案? – hmims
請閱讀此:http://stackoverflow.com/help/mcve。通過提供您正在嘗試運行的查詢幫助其他人幫助您。對於BigQuery工程師來說,擁有過去查詢的工作ID也可能會有所幫助。 –
感謝您添加作業ID。除非有人打我,明天上午我會看看(太平洋時間)。 –