2017-06-04 1 views
0

私は単一のテーブルを持っています。現在、データサンプルを格納するBigQueryには4,300万以上の行があります。フィールドの1つは「owner_id」です。私のすべてのクエリは、単一の所有者に関して行われます。BigQuery:データを複数のテーブルに格納してクエリのコストを削減できますか?

例:

SELECT COUNT(*) 
FROM `mydataset.mytable` 
WHERE owner_id = "owner23" AND color = "red" 

は、各所有者の私BigQueryのクエリコストを下げるためにテーブルを作成しますか?私はWHERE owner_id = "owner23" AND color = "red"でテーブル全体を照会するだけowner23のデータを持つテーブルを照会し、WHERE color = "red"を使用するよりも処理するより多くのGB単位を必要と疑います。私はこれが正しいと思うが、私は確認したいと思った。複数のテーブルは、ストレージコストが増加する原因渡っまた

は、私のデータを分割するのでしょうか?

ありがとうございます!

答えて

3

でしょうか?理論的に

- はい。 WHERE節ごとに修飾された行の数にかかわらず、照会する列のデータのみが請求されます。たとえば、比較的均等なデータを持つ10のクライアントがある場合、クエリのコストは最大10倍低くなる可能性があります。または、COUNT(1)だけでWHERE句が他にない場合は、0ドル(ゼロ)になります。
クエリのコストがゼロでない場合、最小の料金は10MBと同じです。したがって、分割されたテーブルが小さく、関連するカラムのサイズが10MB未満の場合でも、10MBの料金が課金されます。

実際には、潜在的に複数のテーブルを管理するコストが高くなる可能性があるので、自分で比較して決定する必要があります

複数のテーブルにまたがってデータを分割するとストレージコストが増加しますか?

ストレージの価格はMBごとに比例配分され、毎秒 - そうはありません - ストレージ・コストが

を増加させないであろう
0

BigQueryは、特にこのような単純なクエリのために、テーブルストレージにフィルタを押し下げます。フィルタの詳細についてはhereをご覧ください。標準SQLには、この観点からより強力なオプティマイザがあります。

だから、私ははあなたがはるかに利益を得るだろうはないと思います。しかし、それが機能するかどうかをテストして調べることをお勧めします。私は、別々のテーブルを管理する余分な複雑さのメリットがあることを心から疑っています。私のBigQueryのクエリコストを下げ、各所有者のためのテーブルを作成する

関連する問題