Ultra Light のプランは、クエリのアクセス方法をテキスト形式で短くまとめたものなので、テーブルのジョイン操作またはスキャン操作が実装される方法を理解している必要があります。
スキャン操作の場合 1 つのオペランドで表されます。1 つのテーブルのみに適用され、インデックスが使用されます。テーブル名とインデックス名は操作名の後に丸カッコ (( と ))で表されます。
その他の操作 1 つまたは複数のオペランドで表されます。このオペランド自体もプランの場合があります。Ultra Light では、これらのオペランドは、角カッコ ([ と ]) で囲まれた、カンマ区切りのリストです。
次の表は、Ultra Light でサポートされている操作を示します。
操作 | 説明 |
---|---|
count(*) |
テーブルのローの数を数えます。 |
distinct[ plan ] |
クエリの DISTINCT 部分を実装し、重複するローを比較、排除します。基本となるプランでローがソートされるときに使用され、重複、連続するローが排除されます。2 つの連続するローが一致する場合、最初のローだけが結果セットに追加されます。 |
dummy |
処理は行われません。次の 2 つの場合にのみ使用されます。
|
filter[ plan ] |
基本となるプランによって指定される各ローに探索条件を実行します。true と評価されたローだけが、結果セットの一部として転送されます。 |
group-by[ plan ] |
GROUP BY の結果を集約したものを作成し、グループ化されたデータの複数の行をソートします。ローは、発生する順序で表示され、連続するローを比較してグループ化されます。 |
group-single[ plan ] |
1 行だけが返されることがわかっている場合にのみ、GROUP BY の結果を集約したものを作成します。 |
keyset[ plan ] |
テンポラリ・テーブル内のローの作成に使用されたローを記録し、Ultra Light で元の行を更新できるようにします。これらのローを更新しない場合は、クエリで FOR READ ONLY 句を使用してこの操作をなくします。 |
index-scan( table-name, index-name ) |
テーブルの一部だけを読み出します。開始ローはインデックスを使用して検索します。 |
join[ plan, plan ] |
2 つのプラン間で内部ジョインを行います。 |
lojoin[ plan, plan ] |
2 つのプラン間で左外部ジョインを行います。 |
like-scan( table-name, index-name ) |
テーブルの一部だけを読み出します。開始ローはインデックスを使用してパターン一致で検索します。 |
rowlimit[ plan ] |
伝達されたローに対してローの制限処理を行います。ローの制限は、SELECT 文の TOP n または FIRST 句によって設定されます。 |
scan( table-name, index-name ) |
インデックスが示す順序でテーブル全体を読み出します。 |
sub-query[ plan ] |
サブクエリの開始を示します。 |
temp[ plan ] |
基本となるプラン内のローからテンポラリ・テーブルを作成します。Ultra Light では、基本となるローをソートする必要があり、そのために使用できるインデックスが見つからなかった場合にテンポラリ・テーブルが使用されます。 インデックスを追加して、テンポラリ・テーブルを不要にできます。ただし、インデックスを追加すると、インデックス対象のテーブル内のローの挿入または同期に必要な時間が長くなります。 |
union-all[ plan, ..., plan ] |
基本となるプランで生成されるローに対して UNION ALL 操作を行います。 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |