

# Amazon Athena での SQL クエリに関する考慮事項と制約事項
<a name="other-notable-limitations"></a>

Athena でクエリを実行するときは、以下の考慮事項と制限事項に留意してください。
+ **ストアドプロシージャ** – ストアドプロシージャはサポートされていません。
+ **パーティションの最大数** – `CREATE TABLE AS SELECT` (CTAS) ステートメントで作成できるパーティションの最大数は 100 です。詳細については、「[CREATE TABLE AS](create-table-as.md)」を参照してください。回避策については、「[CTAS および INSERT INTO を使用して 100 パーティションの制限を回避する](ctas-insert-into.md)」を参照してください。
+ **サポートされていないステートメント** – サポートされていないステートメントには次が含まれます。Athena でサポートされていない DDL ステートメントの完全なリストについては、「[サポートされない DDL](unsupported-ddl.md)」を参照してください。
  + `CREATE TABLE LIKE` はサポートされていません。
  + `DESCRIBE INPUT` と `DESCRIBE OUTPUT` はサポートされていません。
  + `MERGE` ステートメントは、トランザクションテーブル形式でのみサポートされています。詳細については、「[MERGE INTO](merge-into-statement.md)」を参照してください。
  + `UPDATE` ステートメントはサポートされません。
  + `DELETE FROM` はサポートされていません。
+ **Trino および Presto コネクタ** – [Trino](https://trino.io/docs/current/connector.html) コネクタも [Presto](https://prestodb.io/docs/current/connector.html) コネクタもサポートされていません。データソースの接続には Amazon Athena のフェデレーティッドクエリを使用します。詳細については、「[Amazon Athena フェデレーティッドクエリを使用する](federated-queries.md)」を参照してください。
+ **多数のパーティションがあるテーブルでのタイムアウト** – Athena は、何千ものパーティションがあるテーブルをクエリするときにタイムアウトする場合があります。これは、テーブルに `string` 型ではないパーティションが多数ある場合に発生する可能性があります。`string` 型を使用すると、Athena はメタストアレベルでパーティションをプルーニングします ただし、他のデータ型を使用する場合、Athena はサーバー側のパーティションをプルーニングします。パーティションの数が多いほど、このプロセスにかかる時間が長くなり、クエリがタイムアウトする可能性が高くなります。この問題を解決するには、パーティションの型を `string` に設定して、Athena がメタストアレベルでパーティションをプルーニングするようにします。これにより、オーバーヘッドが軽減され、クエリがタイムアウトするのを防ぐことができます。
+ **Amazon Glacier** のサポート – 復元された Amazon Glacier オブジェクトをクエリするための詳細については、「[復元された Amazon Glacier オブジェクトをクエリする](querying-glacier.md)」を参照してください。
+ **非表示として扱われるファイル** – Athena は、アンダースコア (`_`) またはドット (`.`) で始まるソースファイルを非表示として扱います。この制限を回避するには、ファイルの名前を変更します。
+ **行または列サイズの制限** – 単一の行、またはその列を 32 MB を超えるサイズにすることはできません。この制限は、例えば、1 行に 35 MB の単一の列が含まれる場合に超過する可能性があります。これはサービスのハードリミットであり、変更できません。
+ **テキストファイルの最大行長** – テキストファイル内の 1 行のサイズには 200 MB の上限があります。この制限を超えると、「TextLineLengthLimitExceededException: Too many bytes before newline」(TextLineLengthLimitExceededException: 改行の前のバイト数が多すぎます) というエラーメッセージが表示される場合があります。この制限を回避するには、テキストファイルに 200 MB を超える単一の行が含まれないようにします。
+ **LIMIT 句の最大値** — `LIMIT` 句に指定できる最大行数は 

  9223372036854775807 です。`ORDER BY` を使用するとき、LIMIT 句でサポートされる行の最大数は 2147483647 です。この制限を超えると、NOT\$1SUPPORTED: ORDER BY LIMIT > 2147483647 is not supported (NOT\$1SUPPORTED: ORDER BY LIMIT > 2147483647 はサポートされていません) というエラーメッセージが表示されます。
+ **information\$1schema** – `information_schema` のクエリのパフォーマンスは、AWS Glue メタデータの量が少ない、または中程度の場合に最も高くなります。大量のメタデータがある場合は、エラーが発生する可能性があります。AWS Glue メタデータのための `information_schema` データベースのクエリについては、「[AWS Glue Data Catalog をクエリする](querying-glue-catalog.md)」を参照してください。
+  **配列初期化**— Java の制限により、254 個を超える引数を持つ配列を Athena で初期化することはできません。
+ **非表示メタデータ列** — Hive または Iceberg の非表示メタデータ列 `$bucket`、`$file_modified_time`、`$file_size`、および `$partition` は、ビューでサポートされていません。Athena の `$path`メタデータ列の使用方法については「[Amazon S3 内にあるソースデータのファイルの場所の取得](select.md#select-path)」を参照してください。

クエリ文字列の最大長、クエリタイムアウトのクォータ、アクティブな DML クエリ数のクォータについては、「[サービスクォータ](service-limits.md)」を参照してください。