XDBでは,SQLを処理するときに,作業表用DBエリアに作業表を作成することがあります。作業表には,ソートしたデータが一時的に格納されます。このため,大量のデータをソートすると,作業表を作成する処理による負荷によって,処理性能が低下することがあります。
作業表を作成する要因となるSQLと,作業表の作成を回避する方法を次の表に示します。
表4-5 作業表を作成する要因となるSQLと作業表の作成を回避する方法
項番 | 作業表が作成される要因となるSQL | 作業表が作成される目的 | 作業表の作成を回避する方法 |
---|---|---|---|
1 | ORDER BY句の指定があるSQL | 検索結果のソート処理に使われます。 | ORDER BY句に指定している列にインデクスを定義してください。 |
2 | DISTINCT集合関数の指定があるSQL | 重複排除のためのソート処理に使われます。 | DISTINCT集合関数の引数列を第一構成列とするインデクスを定義してください。 |
作業表用DBエリアには,作業表と作業表のインデクスが格納されます。作業表の構成列とインデクス構成列を次の表に示します。
表4-6 作業表の構成列とインデクス構成列
項番 | 作業表の種類 | 作業表の構成列 | 作業表のインデクス構成列 |
---|---|---|---|
1 | ORDER BY句の実行時に作成される作業表 |
| ORDER BY句に指定した列 |
2 | DISTINCT集合関数の実行時に作成される作業表 | DISTINCT集合関数の引数に指定した列 | DISTINCT集合関数の引数に指定した列 |
作業表の定義では,構成列数や列の長さの合計などに制限があり,制限を超えるとSQLがエラーになります。構成列数や列の長さの合計などに関する制限については,マニュアル「TP1/EE/Extended Data Cache SQLプログラミング」の「CREATE TABLE(表の定義)」の「共通規則」を参照してください。
作業表のインデクスの定義では,インデクスキーの長さ(列の長さ)に制限があり,制限を超えるとSQLがエラーになります。インデクスキーの長さ,および制限については,マニュアル「TP1/EE/Extended Data Cache SQLプログラミング」の「CREATE INDEX(インデクスの定義)」の「共通規則」を参照してください。