適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric SQL Database
インテリジェントなクエリ処理 (QP) 機能ファミリには、最小限の労力で実装できる、既存のワークロードのパフォーマンスを広範に改善する機能が含まれています。 次の図では、IQP 機能のファミリと、それらが SQL Server に初めて導入された時期について詳しく説明します。 Azure SQL Managed Instance とAzure SQL DatabaseのIQP機能は利用可能です。 一部の機能は、データベースの互換性レベルによって異なります。
インテリジェントなクエリ処理の概要については、このビデオをご覧ください。
GitHub のインテリジェント クエリ処理 (IQP) 機能のデモとサンプル コードについては、次を参照してください https://aka.ms/IQPDemos。
データベースに対して適用可能なデータベース互換性レベルを有効にすることにより、自動的にワークロードをインテリジェントなクエリ処理の対象にすることができます。 これは Transact-SQL を使って設定できます。 次に例を示します。
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;
以下の表で、すべてのインテリジェントなクエリ処理について詳しく説明します。これには、データベース互換性レベルに関する要件も含まれます。 リリース ノートや詳細な説明など、すべての IQP 機能の詳細については、 インテリジェント クエリ処理機能の詳細を参照してください。
Azure SQL Database と SQL Server 2025 Preview の IQP 機能
IQP の機能 | Azure SQL Database でのサポート | SQL Server 2025 (17.x) プレビューでサポートされます | 説明 |
---|---|---|---|
最適化されたハロウィンの保護 | いいえ | はい。互換性レベル 170 の SQL Server 2025 (17.x) プレビュー以降 |
tempdb 領域の消費を減らし、ハロウィーンの保護にスプールを使用しないことでクエリのパフォーマンスを向上させます。 |
パラメータープランの最適化のオプション (OPPO) | いいえ | はい。互換性レベル 170 の SQL Server 2025 (17.x) プレビュー以降 | パラメーターの機密性の高いプランの最適化 (PSPO) の機能強化で導入されたアダプティブ プラン最適化 (マルチプラン) インフラストラクチャを活用します。これは、1 つのステートメントから複数のプランを生成します。 この機能では、パラメーターが NULL OR NOT NULL かどうかに基づいて実行時により最適なプランを選択できます。これにより、このようなクエリ パターンのパフォーマンスが既定で最適でないクエリのパフォーマンスが向上します。 |
式のカーディナリティ推定 (CE) フィードバック | いいえ | はい。互換性レベル 160 の SQL Server 2025 (17.x) プレビュー以降 | CE フィードバックを拡張し、以前の実行から学習し、それらの式の将来の実行に適切な CE モデルの選択を自動的に適用することで、クエリ間で式を繰り返すカーディナリティ推定を向上させます |
OPTIMIZED_SP_EXECUTESQL | はい | はい。SQL Server 2025 (17.x) プレビュー以降 | コンパイル ストームの影響を効果的に軽減します。 コンパイル ストームとは、多数のクエリが同時にコンパイルされ、パフォーマンスの問題やリソースの競合が発生する状況を指します。 この機能を有効にすると、 sp_executesql の呼び出しが、コンパイルの観点からストアド プロシージャやトリガーなどのオブジェクトのように動作できるようになります。 |
Azure SQL Database と SQL Server 2022 の IQP 機能
IQP の機能 | Azure SQL Database でのサポート | SQL Server 2022 (16.x) でサポートされます | 説明 |
---|---|---|---|
適応型結合 (バッチ モード) | はい、データベース互換レベルが 140 以上です | はい、SQL Server 2017 (14.x) 以降、データベース互換レベル 140 以上です | 適応型結合では、実際の入力行に基づき、実行時に結合の種類が動的に選択されます。 |
個別の概算数 | はい | はい、SQL Server 2019 (15.x) 以降です | ビッグ データ シナリオのおおよその COUNT DISTINCT を提供し、高パフォーマンスと低メモリ フットプリントの利点を提供します。 |
近似パーセンタイル | はい、データベース互換レベルが 110 以上です | はい、SQL Server 2022 (16.x) 以降、互換レベル 110 以上です | 近似パーセンタイル集計関数を使って迅速に意思決定できるよう、許容されるランク ベースのエラー境界で大規模なデータセットのパーセンタイルをすばやく計算します。 |
行ストアでのバッチ モード | はい、データベース互換レベルが 150 以上です | はい、SQL Server 2019 (15.x) 以降、互換性レベル 150 以上です | 列ストア インデックスを必要としない、CPU にバインドされたリレーショナル DW ワークロードに対してバッチ モードを指定します。 |
カーディナリティ推定 (CE) のフィードバック | はい、データベース互換レベルが 160 以上です | はい、SQL Server 2022 (16.x) 以降、互換レベル 160 以上です | クエリを繰り返すカーディナリティの見積もりを自動的にチューニングして、非効率的な CE の前提条件によってクエリ パフォーマンスが低下するワークロードを最適化します。 CE フィードバックでは、クエリ実行プランの品質を向上させるために、特定のクエリとデータ分散に適合するモデルの前提条件が特定され、使用されます。 |
並列処理度数 (DOP) のフィードバック | はい、プレビューでは、データベース互換レベルが 160 で開始 | はい、SQL Server 2022 (16.x) 以降、互換レベル 160 以上です | 自動では、クエリを繰り返す並列処理の次数が自動的にチューニングされ、過剰な並列処理によってパフォーマンスの問題が発生するおそれがあるワークロードに合わせて最適化されます。 クエリ ストアを有効にしておく必要があります。 |
インターリーブ実行 | はい、データベース互換レベルが 140 以上です | はい、SQL Server 2017 (14.x) 以降、データベース互換レベル 140 以上です | 固定推定値ではなく、最初のコンパイルで発生した複数ステートメントのテーブル値関数の実際のカーディナリティを使用します。 |
メモリ許可フィードバック (バッチ モード) | はい、データベース互換レベルが 140 以上です | はい、SQL Server 2017 (14.x) 以降、データベース互換レベル 140 以上です | バッチ モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
メモリ許可フィードバック (行モード) | はい、データベース互換レベルが 150 以上です | はい、SQL Server 2019 (15.x) 以降、データベース互換レベル 150 以上です | 行モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
メモリ許可フィードバック (パーセンタイル) | はい、すべてのデータベースで有効です | はい、SQL Server 2022 (16.x) 以降、データベース互換レベル 140 以上です | 過去のクエリ実行を組み込んでフィードバックを絞り込むことで、メモリ許可フィードバックの既存の制限に取り組みます。 |
メモリ許可フィードバックの永続化 | はい、すべてのデータベースで有効です | はい、SQL Server 2022 (16.x) 以降、データベース互換レベル 140 以上です | メモリ許可フィードバックを保持するための新しい機能を提供します。 データベースと READ_WRITE モードでクエリ ストアを有効にする必要があります。 |
CE フィードバックの永続化 | はい、データベース互換レベルが 160 以上です | はい、SQL Server 2022 (16.x) 以降、データベース互換レベル 160 以上です | データベースと READ_WRITE モードでクエリ ストアを有効にする必要があります。 |
DOP フィードバックの永続化 | はい、プレビューでは、データベース互換レベルが 160 で開始 | はい、SQL Server 2022 (16.x) 以降、データベース互換レベル 160 以上です | データベースと READ_WRITE モードでクエリ ストアを有効にする必要があります。 |
クエリ ストアを使用したプラン強制の最適化 | はい | はい、SQL Server 2022 (16.x) 以降です。 | 強制クエリを繰り返すためのコンパイル オーバーヘッドが減ります。 詳しくは、「クエリ ストアでのプランの強制の最適化」をご覧ください。 |
スカラー UDF のインライン化 | はい、データベース互換レベルが 150 以上です | はい、SQL Server 2019 (15.x) 以降、データベース互換レベル 150 以上です | スカラー UDF は同等のリレーショナル式に変換され、この式は呼び出し側クエリに "インライン化" されます。これにより、多くの場合、パフォーマンスが大幅に向上します。 |
パラメーターに依存するプランの最適化 | はい、データベース互換レベルが 160 以上です | はい、SQL Server 2022 (16.x) 以降、データベース互換レベル 160 以上です | パラメーターの機密性の高いプランの最適化は、パラメーター化されたクエリの 1 つのキャッシュされたプランが、一様でないデータ分散など、すべての可能な受信パラメーター値に対して最適ではないシナリオに対処します。 |
テーブル変数の遅延コンパイル | はい、データベース互換レベルが 150 以上です | はい、SQL Server 2019 (15.x) 以降、データベース互換レベル 150 以上です | 固定推定値ではなく、最初のコンパイルで発生したテーブル変数の実際のカーディナリティを使用します。 |
Azure SQL Managed Instance の IQP 機能
IQP の機能 | Azure SQL Managed Instance でサポートされる | 説明 |
---|---|---|
適応型結合 (バッチ モード) | はい、データベース互換レベルが 140 以上です | 適応型結合では、実際の入力行に基づき、実行時に結合の種類が動的に選択されます。 |
個別の概算数 | はい | ビッグ データ シナリオのおおよその COUNT DISTINCT を提供し、高パフォーマンスと低メモリ フットプリントの利点を提供します。 |
近似パーセンタイル | はい、データベース互換レベルが 110 以上です | 近似パーセンタイル集計関数を使って迅速に意思決定できるよう、許容されるランク ベースのエラー境界で大規模なデータセットのパーセンタイルをすばやく計算します。 |
行ストアでのバッチ モード | はい、データベース互換レベルが 150 以上です | 列ストア インデックスを必要としない、CPU にバインドされたリレーショナル DW ワークロードに対してバッチ モードを指定します。 |
カーディナリティ推定 (CE) のフィードバック | はい、データベース互換レベルが 160 以上です | クエリを繰り返すカーディナリティの見積もりを自動的にチューニングして、非効率的な CE の前提条件によってクエリ パフォーマンスが低下するワークロードを最適化します。 CE フィードバックでは、クエリ実行プランの品質を向上させるために、特定のクエリとデータ分散に適合するモデルの前提条件が特定され、使用されます。 |
並列処理度数 (DOP) のフィードバック | なし | 自動では、クエリを繰り返す並列処理の次数が自動的にチューニングされ、過剰な並列処理によってパフォーマンスの問題が発生するおそれがあるワークロードに合わせて最適化されます。 クエリ ストアを有効にしておく必要があります。 |
インターリーブ実行 | はい、データベース互換レベルが 140 以上です | 固定推定値ではなく、最初のコンパイルで発生した複数ステートメントのテーブル値関数の実際のカーディナリティを使用します。 |
メモリ許可フィードバック (バッチ モード) | はい、データベース互換レベルが 140 以上です | バッチ モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
メモリ許可フィードバック (行モード) | はい、データベース互換レベルが 150 以上です | 行モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
メモリ許可フィードバック (パーセンタイル) | はい、データベース互換レベルが 160 以上です | 過去のクエリ実行を組み込んでフィードバックを絞り込むことで、メモリ許可フィードバックの既存の制限に取り組みます。 |
メモリ許可、CE 、と DOPのフィードバックの永続化 | はい、データベース互換レベルが 160 以上です | メモリ許可フィードバックを保持するための新しい機能を提供します。 CE および DOP フィードバックは常に保持されます。 データベースと READ_WRITE モードでクエリ ストアを有効にする必要があります。 |
クエリ ストアを使用したプラン強制の最適化 | なし | 強制クエリを繰り返すためのコンパイル オーバーヘッドが減ります。 詳しくは、「クエリ ストアでのプランの強制の最適化」をご覧ください。 |
スカラー UDF のインライン化 | はい、データベース互換レベルが 150 以上です | スカラー UDF は同等のリレーショナル式に変換され、この式は呼び出し側クエリに "インライン化" されます。これにより、多くの場合、パフォーマンスが大幅に向上します。 |
パラメーターに依存するプランの最適化 | はい、データベース互換レベルが 160 以上です | パラメーター感度最適化は、パラメーター化されたクエリに対して、単一のキャッシュプランがすべての可能な受信パラメーター値に対して最適でない場合のシナリオ、例えば一様でないデータ分布に対処します。 |
テーブル変数の遅延コンパイル | はい、データベース互換レベルが 150 以上です | 固定推定値ではなく、最初のコンパイルで発生したテーブル変数の実際のカーディナリティを使用します。 |
SQL Server 2019 の IQP 機能
IQP 機能 | SQL Server 2019 (15.x)でサポートされています | 説明 |
---|---|---|
適応型結合 (バッチ モード) | はい、SQL Server 2017 (14.x) 以降、データベース互換レベル 140 以上です | 適応型結合では、実際の入力行に基づき、実行時に結合の種類が動的に選択されます。 |
個別の概算数 | はい | ビッグ データ シナリオのおおよその COUNT DISTINCT を提供し、高パフォーマンスと低メモリ フットプリントの利点を提供します。 |
行ストアでのバッチ モード | はい、データベース互換レベルが 150 以上です | 列ストア インデックスを必要としない、CPU にバインドされたリレーショナル DW ワークロードに対してバッチ モードを指定します。 |
インターリーブ実行 | はい、データベース互換レベルが 140 以上です | 固定推定値ではなく、最初のコンパイルで発生した複数ステートメントのテーブル値関数の実際のカーディナリティを使用します。 |
メモリ許可フィードバック (バッチ モード) | はい、データベース互換レベルが 140 以上です | バッチ モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
メモリ許可フィードバック (行モード) | はい、データベース互換レベルが 150 以上です | 行モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
スカラー UDF のインライン化 | はい、データベース互換レベルが 150 以上です | スカラー UDF は同等のリレーショナル式に変換され、この式は呼び出し側クエリに "インライン化" されます。これにより、多くの場合、パフォーマンスが大幅に向上します。 |
テーブル変数の遅延コンパイル | はい、データベース互換レベルが 150 以上です | 固定推定値ではなく、最初のコンパイルで発生したテーブル変数の実際のカーディナリティを使用します。 |
SQL Server 2017 の IQP 機能
IQP 機能 | SQL Server 2017 (14.x)でサポートされています | 説明 |
---|---|---|
適応型結合 (バッチ モード) | はい、SQL Server 2017 (14.x) 以降、データベース互換レベル 140 以上です | 適応型結合では、実際の入力行に基づき、実行時に結合の種類が動的に選択されます。 |
個別の概算数 | はい | ビッグ データ シナリオのおおよその COUNT DISTINCT を提供し、高パフォーマンスと低メモリ フットプリントの利点を提供します。 |
インターリーブ実行 | はい、データベース互換レベルが 140 以上です | 固定推定値ではなく、最初のコンパイルで発生した複数ステートメントのテーブル値関数の実際のカーディナリティを使用します。 |
メモリ許可フィードバック (バッチ モード) | はい、データベース互換レベルが 140 以上です | バッチ モード クエリにディスクへの書き込み操作がある場合は、連続実行のためにさらにメモリを追加します。 クエリで > 50% を超える、割り当てられたメモリが浪費される場合は、連続実行のためにメモリ許可サイズチューニングを減らします。 |
クエリ ストアの要件
インテリジェントなクエリ処理機能のスイートの一部では、ユーザー データベースのメリットを得るためにクエリ ストアを有効にする必要があります。 クエリ ストアを有効にする必要がある場合は、「クエリ ストアを有効にする」を参照してください。
IQP 機能 | クエリ ストアを有効にする必要があり、READ_WRITE |
---|---|
適応型結合 (バッチ モード) | いいえ |
個別の概算数 | いいえ |
近似パーセンタイル | いいえ |
行ストアでのバッチ モード | いいえ |
カーディナリティ推定 (CE) のフィードバック | はい |
並列処理度数 (DOP) のフィードバック | はい |
インターリーブ実行 | いいえ |
メモリ許可フィードバック (バッチ モード) | いいえ |
メモリ許可フィードバック (行モード) | いいえ |
メモリ許可フィードバック(パーセンタイルと永続化モード) | はい |
クエリ ストアを使用したプラン強制の最適化 | はい |
スカラー UDF のインライン化 | いいえ |
パラメーターに依存するプランの最適化 | いいえ (ただし推奨) |
テーブル変数の遅延コンパイル | いいえ |
関連するコンテンツ
- インテリジェントなクエリ処理機能の詳細
- 結合 (SQL Server)
- 実行モード
- クエリ処理アーキテクチャ ガイド
- 論理および物理プラン表示操作のリファレンス
- SQL Server 2017 の新機能
- SQL Server 2019 の新機能
- SQL Server 2022 の新機能
- メモリ許可フィードバック
- インテリジェントなクエリ処理のデモ
- 定数のたたみ込みと式の評価
- GitHub でのインテリジェントなクエリ処理のデモ
- SQL Server データベース エンジンと Azure SQL Database のパフォーマンス センター
- クエリ ストアを使用したパフォーマンスの監視
- クエリ ストアを使用してワークロードを監視するためのベスト プラクティス