ApsaraDB for SelectDB は、Nereids オプティマイザーとパイプライン実行エンジンを使用してクエリを自動的に最適化します。高性能なクエリの要件を満たすために、手動でクエリを最適化することもできます。たとえば、インデックスによる高速化、高同時実行ポイントクエリ、マテリアライズドビュー、JOIN 最適化を使用できます。
自動クエリ最適化プランニング
SelectDB では、Nereids オプティマイザーとパイプライン実行エンジンはクエリ処理の中核技術であり、クエリ最適化フェーズと実行フェーズで深い最適化に使用できます。これらの技術により、複雑なクエリのパフォーマンスとリソース使用量が大幅に改善されます。次の図は、これらの技術が SelectDB の SQL ステートメント をどのように最適化するかを示しています。
次の表に、各技術の主な機能を示します。詳細については、関連ドキュメントをご参照ください。
|
技術 |
機能の説明 |
|
|
|
手動クエリ最適化
SelectDB の Nereids オプティマイザーとパイプライン実行エンジンがクエリ要件を満たさない場合は、統計情報 を使用してクエリデータを分析し、適切なポリシーを選択してクエリを最適化できます。
|
最適化ポリシー |
シナリオ |
制約 |
|
高同時実行ポイントクエリを最適化したい場合。 説明
ポイントクエリ とは、特定の条件を満たす少量のデータをデータベースから取得することです。ほとんどの場合、主キーまたはカーディナリティの高い列を使用して取得します。 |
|
|
|
繰り返し実行され、時間がかかる複雑なクエリを最適化したい場合。 |
詳細については、「同期マテリアライズドビュー」をご参照ください。 |
|
|
任意のシナリオでデータを迅速にクエリ・特定したい場合。 |
制約はインデックスの種類によって異なります。詳細については、「インデックスによる高速化」をご参照ください。 |
|
|
JOIN クエリを最適化したい場合。 |
JOIN 条件には左テーブルの分散列を含める必要があり、実行中に左テーブルは 1 つのパーティションのデータのみを使用します。 |
|
|
JOIN クエリを最適化したい場合。 |
JOIN 条件には左テーブルの分散列を含める必要があり、かつ左テーブルと右テーブルは同じ Colocate Group に属している必要があります。 |
|
|
大規模テーブルと小規模テーブルを結合する処理の最適化が必要なシナリオ。 |
ランタイムフィルターを使用する場合、JOIN ステートメント は次の要件を満たす必要があります:
|
|
|
|
|
|
|