すべてのプロダクト
Search
ドキュメントセンター

Tablestore:コンピューティングプッシュダウン

最終更新日:Dec 28, 2024

検索インデックスは、条件付きフィルタリング、集計、ソートなどの機能をサポートしています。検索インデックスを作成すると、システムは検索インデックスの計算能力を最大限に活用し、一部のSQL計算タスクを検索インデックスにプッシュダウンして実行できます。これにより、フルテーブルスキャンが不要になり、計算効率が向上します。

説明

検索インデックスの詳細については、概要を参照してください。

シナリオ

検索インデックスにSQLステートメントに含まれるデータ列が含まれている場合、SQLエンジンは検索インデックスを使用してデータを読み取り、検索インデックスでサポートされている演算子をプッシュダウンします。たとえば、exampletableという名前のテーブルには、a、b、c、dの列が含まれています。テーブルの検索インデックスには、インデックスが付けられたa、b、cの列が含まれています。SQLエンジンは、a、b、cの列がSQLステートメントに含まれている場合にのみ、検索インデックスを使用してデータを読み取ります。

SELECT a, b, c, d FROM exampletable; /* 検索インデックスにはa、b、c、またはdの列が含まれていません。SQLエンジンはテーブル全体をスキャンしてデータを読み取り、演算子をプッシュダウンしません。 */
SELECT a, b, c FROM exampletable;    /* 検索インデックスにはa、b、cの列が含まれています。SQLエンジンは検索インデックスを使用してデータを読み取り、演算子をプッシュダウンします。 */

前提条件

プッシュダウンできる演算子

次の表は、SQLステートメントで実行するために検索インデックスにプッシュダウンできる演算子について説明しています。

タイプ

演算子

プッシュダウンの制限

論理演算子

ANDおよびOR

NOT演算子はプッシュダウンできません。

関係演算子

=、!=、<、<=、>、>=、およびBETWEEN ... AND ...

演算子のプッシュダウンは、データ列と定数の比較に対してのみサポートされています。データ列間の比較では、演算子のプッシュダウンはサポートされていません。

SELECT * FROM exampletable WHERE a > 1;  /* 演算子のプッシュダウンは、データ列と定数の比較に対してサポートされています。 */
SELECT * FROM exampletable WHERE a > b;  /* 演算子のプッシュダウンは、データ列間の比較に対してはサポートされていません。 */

集計関数

  • 基本集計:MIN、MAX、COUNT、AVG、SUM、およびANY_VALUE

  • 重複排除と集計:COUNT(DISTINCT col_name)

  • グループ化:GROUP BY col_name

集計関数は、すべてのデータまたはGROUP BYグループのデータを集計できます。演算子のプッシュダウンは、集計関数がプッシュダウンをサポートし、関数パラメーターがデータ列である場合にのみサポートされます。

SELECT COUNT(*) FROM exampletable;           /* 演算子のプッシュダウンは、COUNT(*)の特別な使用方法でサポートされています。 */
SELECT SUM(a) FROM exampletable;             /* 演算子のプッシュダウンは、関数パラメーターがデータ列である場合にサポートされます。 */
SELECT a, b FROM exampletable GROUP BY a, b; /* 演算子のプッシュダウンは、データ列によるグループ化でサポートされています。 */
SELECT a FROM exampletable GROUP BY a+1;     /* 演算子のプッシュダウンは、式によるグループ化ではサポートされていません。 */
SELECT SUM(a+b) FROM exampletable;           /* 演算子のプッシュダウンは、関数パラメーターが式である場合にサポートされていません。 */

LIMIT

  • LIMIT row_count

  • ORDER BY col_name LIMIT row_count

演算子のプッシュダウンは、ORDER BY句のパラメーターがデータ列である場合にのみサポートされます。

SELECT * FROM exampletable ORDER BY a LIMIT 1;     /* 演算子のプッシュダウンは、データ列によるソートでサポートされています。 */
SELECT * FROM exampletable ORDER BY a, b LIMIT 1;  /* 演算子のプッシュダウンは、データ列によるソートでサポートされています。 */
SELECT * FROM exampletable ORDER BY a+1 LIMIT 1;   /* 演算子のプッシュダウンは、式によるソートではサポートされていません。 */