私は、ほぼ100万行のテーブルを持っています。 1つの値を検索するには5秒かかり、約15秒で500になります。これはかなり長い時間です。どのようにクエリを最適化できますか教えてください。Google bigQueryでのクエリが遅い
私のクエリは次のとおりです。
select a,b,c,d from table where a in ('a1','a2')
ジョブID:安定-APOGEE-119006:job_ClLDIUSdDLYA6tC2jfC5GxBXmv0
私は、ほぼ100万行のテーブルを持っています。 1つの値を検索するには5秒かかり、約15秒で500になります。これはかなり長い時間です。どのようにクエリを最適化できますか教えてください。Google bigQueryでのクエリが遅い
私のクエリは次のとおりです。
select a,b,c,d from table where a in ('a1','a2')
ジョブID:安定-APOGEE-119006:job_ClLDIUSdDLYA6tC2jfC5GxBXmv0
私はあなたが "それが15秒を要し500" によって何を意味するかわからないが、私はいくつかのテストを実行しました当社のデータベースには、あなたが実行しているものをシミュレートしようとしていると私はあなたにいくつかの同様の結果を得た反対
は(私のクエリは、それが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
1日だけ質問すると、1人のフルビジュアルを持って来ても、約5秒で1.7 GBを処理できました。
そして、私が先月のために同じクエリを実行し、limit
オペレータを削除する場合には、処理するために、〜の10Sを取った〜(34万行程度)データの56ギガバイト:
これはめちゃくちゃ速いです。
プロジェクトのスペックを評価する必要があるかもしれません。まだ5秒があなたのためにあまりにも多すぎるなら、多分あなたはあなたのアーキテクチャに合った他の戦略を見つける必要があります。
BigQueryは要求を処理するのに秒を費やしますが、何百というGigasも数秒で処理する準備ができています。
プロジェクトのデータ使用量が増加し、数百万行の処理が開始される場合は、アプリケーションで数秒待っても問題がないかどうかを評価できます。
他にも、クエリが実行される限り、パフォーマンスを向上させるための最適化はあまりないとは思いません。
(PS:私は100日のために実行することを決定し、それは14Sで100 GB単位の周りに処理)
なぜそれがdownvotedされますか?どうすれば最適化できますか? – hmims
こちらをお読みください:http://stackoverflow.com/help/mcve実行しようとしているクエリを他の人が手助けするのを助けてください。 BigQueryのエンジニアにとっては、過去のクエリのジョブIDを持つことも役に立ちます。 –
ジョブIDを追加していただきありがとうございます。誰かが私にそれを打つことがなければ、私は明日の朝(太平洋時間)を見ます。 –