質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Amazon Athena

Amazon Athenaは、標準SQLを使用してAmazon S3内のデータを直接分析することができるインタラクティブなクエリサービスです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

3472閲覧

athenaのクエリのlimitに関して

yonchome

総合スコア41

Amazon Athena

Amazon Athenaは、標準SQLを使用してAmazon S3内のデータを直接分析することができるインタラクティブなクエリサービスです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/10/04 12:09

SELECT test1.id
FROM "test1"."test1" as test1
join "test2"."test2" as test2
on test1.id = test2.id

上記のクエリを行った際に10分たってもクエリが終了しませんでした

一方で以下のようにした時に2秒程で完了しました
limitをつけなければ完了しないものなのでしょうか?

SELECT test1.id
FROM "test1"."test1" as test1
join "test2"."test2" as test2
on test1.id = test2.id
limit 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

test1とtest2のデータ量はどれほどでしょうか?
時間がかかっていることから恐らくそれなりにデータ容量が大きいものと推測します。
Athenaを使う場合、適切にパーティションを設定してクエリで参照するデータ量を減らさないと大量のデータを参照しようとしてとても時間がかかります。
パーティションの作成方法については下記などをご参照ください。
データのパーティション分割
Athenaの自動パーティショニングをPartition Projectionで実現する
やや古いですがこちらも参考になります。
Amazon Athenaのパーティションを理解する #reinvent
Amazon Athena でデータがパーティション分割されていないログを分析する

パーティション作成済みであれば、WHEREでパーティションを指定してください。

またsaziさんの仰るとおりlimitをつけても例えばORDER BYをつけたりすると結局ソートする時に全データを参照するので時間がかかります。

投稿2020/10/04 14:55

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yonchome

2020/10/04 15:07

ありがとうございます。 データ量はtest1が50レコード程度 test2が1000レコード程度 test2にはパーティションを設定している状況です。
yu_1985

2020/10/04 15:42

設定しているだけではダメで、WHEREでパーティションを指定して検索範囲を絞り込んでください。
yonchome

2020/10/10 15:20

パーティションの勉強になりました、ありがとうございます
guest

0

limitをつけなければ完了しないものなのでしょうか?

limitがある状態でも、order by付けると時間が掛かるのではないかと思います。

インデックスが無いようであれば、インデックスを作成して下さい。

Amazon Athenaはインデックスではなくパーティションでデータを区切る事により、性能を確保するようですね。
データ量に応じて料金が変わるようですから、速さ以前に切実ですね。

投稿2020/10/04 14:07

編集2020/10/04 16:21
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yonchome

2020/10/10 15:20

確かに料金にも関わりますね、ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問