説明
%INSET 述語では、valueset に指定された値と一致するデータ値を選択することで、結果セットをフィルタ処理できます。この一致は、scalar-expression の値が valueset 内の値と一致したときに成功します。valueset の値がスカラ式のいずれの値とも一致しない場合、%INSET は NULL 文字列を返します。表示モードに関係なく、この照合は常に、論理 (内部保存) データ値に対して実行されます。
%INSET は NULL 値に対して真になることはありません。したがって、valueset に NULL が入った scalar-expression の NULL には一致しません。
%INSET は、他の比較条件と同様に、SELECT 文の WHERE 節または HAVING 節の中で使用します。
%INSET では、抽象的な、プログラムで指定された一致する値のセットを使用して、フィールド値をフィルタ処理できます。具体的には、抽象的な、プログラムで指定された一時ファイルまたはビットマップ・インデックスを使用して、RowId フィールドの値をフィルタ処理できます。その場合、valueset はビットマップ・インデックスまたは通常のインデックスの最下位の添え字の層と同じように機能します。
このユーザ定義クラスは、抽象クラス %SQL.AbstractFindOpens in a new tab から派生します。この抽象クラスには、%INSET でサポートされる唯一のメソッドである ContainsItem()Opens in a new tab メソッドが定義されています。ContainsItem() メソッドは、valueset を返します。詳細は %SQL.AbstractFindOpens in a new tab を参照してください。
SIZE 節
オプションの %INSET SIZE 節には整数 nn が提供され、これによって valueset 内の値の桁数が指定されます。InterSystems IRIS はこの桁数を使用して、最適なクエリ・プランを決定します。nn は、10、100、1000、10000、その他のいずれかのリテラルで指定します。nn は、コンパイル時に定数値として使用可能であることが要求されるため、すべての SQL コードでリテラルとして指定する必要があります。埋め込み SQL を除くすべての SQL で、示されるように入れ子の括弧を指定する必要があります。
%INSET と %FIND の比較
-
%INSET は、最も単純で最も一般的なインタフェースです。ContainsItem() メソッドをサポートします。
-
%FIND は、ビットマップ・インデックスを使ったビットマップ・チャンクの反復処理をサポートします。ObjectScript の $ORDER 関数の機能をエミュレートし、NextChunk()、PreviousChunk()、GetChunk() の各反復処理メソッドと、ContainsItem() メソッドをサポートします。
-