最後にアクセスされたレコードが、現在の物理レコードです。
次の物理レコードは、現在の物理レコードに対してすぐ上位のアドレスを持つレコードです。
直前の物理レコードは、すぐ下位のアドレスを持つレコードです。最初の物理レコードの直前の物理レコードはありません。同様に、最後の物理レコードの次の物理レコードはありません。
これらのオペレーションのコードの記述方法については、『Btrieve API Guide』を参照してください。このセクションでは、これらのオペレーションを最高のパフォーマンスで使用するために、最適化する方法を説明します。
ディスクリプター
拡張式とも呼ばれます。Btrieve Extended オペレーションをどのように実行するかを示す、データ バッファー全体の内容です。
フィルター
拡張式の一部で、選択するレコードに適用される選択条件を表します。
条件
フィルターの一部で、単一の論理演算子を使用します。
コネクタ
ある条件を後続の条件と接続するための論理演算子です。 AND、OR、または NONE のいずれかになります。
キー
インデックス定義全体を表し、複数のセグメントを含むことができます。Get オペレーションは、MicroKernel が単一のキー パスに沿ってデータ ファイル内を移動することを必要とします。
キー セグメント
複合インデックス、またはマルチ セグメント キーとも呼ばれ、複数のセグメントを定義できます。 各セグメントには、オフセット、長さ、データ型などを定義します。
(Field1 = AAA AND (Field2 = AAA AND (Field3 = AAA)))
MicroKernel エンジンはレコード 1 を取得し、ステータス コード 64(最適化限度を超えた)で検索を停止します。 最適化条件を満たす最後に調べたレコードはレコード 1 で、これが現在のレコードになります。 Pervasive.SQL 2000 SP3 より前のエンジンは 1 つの条件しか最適化できなかったため、現在のレコードはレコード 3 のままでした。
(Field1 = AAA OR (Field2 = AAA OR (Field3 = AAA)))
MicroKernel エンジンはレコード 1、2、3、4、5、6、7、10、13、および 14 を取得し、ステータス コード 9(ファイルの終わりに達した)を返します。 最初の条件に OR コネクタが含まれているため、どの条件も最適化されません。現在のレコードは、レコード 14 になります。
(Field1 = BBB AND (Field2 = BBB OR (Field3 = BBB)))
MicroKernel エンジンはレコード 5、7、8、9、および 11 を取得し、ステータス コード 64 を返します。 最初の条件は最適化されましたが、2 番目の条件は OR コネクタが含まれているため、最適化されませんでした。 最適化条件を満たす最後に調べたレコードはレコード 12 で、これが現在のレコードになります。
(Field4 = OOO AND (Field2 = BBB AND (Field3 = BBB)))
MicroKernel エンジンはレコード 2 と 8 を取得し、ステータス コード 9 を返します。 最初のキー セグメントに対して最適化できる条件がないため、以降のセグメントも最適化されません。 現在のレコードは、レコード 14 になります。
(Field1 = BBB AND (first byte of Field2 = B AND (Field3 = BBB)))
MicroKernel エンジンはレコード 8 を取得し、ステータス コード 64 を返します。最初の 2 つの条件は最適化されますが、2 番目の条件が部分文字列であるため、3 番目の条件は最適化されません。最適化条件を満たす最後に調べたレコードは、レコード 9 です。Pervasive.SQL 2000 SP3 より前のエンジンは 1 つの条件しか最適化できなかったため、現在のレコードとしてレコード 12 を返しました。
(Field1 = BBB AND (Field2 = Field3))
これは、比較コードに +64 バイアスを使用して行われます。このバイアスは、2 番目のオペランドが定数ではなくレコード内の別のフィールドであることを示します。MicroKernel エンジンはレコード 4、8、および 12 を取得し、ステータス コード 64 を返します。最初の条件は最適化されますが、2 番目の条件は定数との比較でないため最適化されません。最適化条件を満たす最後に調べたレコードは、レコード 12 です。
(Field1<= BBB AND (Field2 <= BBB AND (Field3 <= BBB)))
MicroKernel エンジンはレコード 1、2、4、5、7、および 8 を取得し、ステータス コード 64 を返します。 最初の条件は最適化されますが、論理演算子 EQ を含まないため、以降の条件は最適化されません。最適化条件を満たす最後に調べたレコードは、レコード 12 です。
(Field1= BBB AND (Field2 < BBB AND (Field3 < BBB)))
MicroKernel エンジンはレコード 4 を取得し、ステータス コード 64 を返します。 最初の条件は最適化されますが、2 番目の条件は論理演算子 EQ を含まないため最適化されません。 最適化条件を満たす最後に調べたレコードは、レコード 12 です。
(Field1= BBB AND (Field2 = BBB AND (Field3 < BBB)))
MicroKernel エンジンはレコード 7 を取得し、ステータス コード 64 を返します。 最初の 2 つの条件は EQ を使用しているため最適化されますが、3 番目の条件は最適化されません。 最適化条件を満たす最後に調べたレコードは、レコード 9 です。 Pervasive.SQL 2000 SP3 より前のエンジンは 1 つの条件しか最適化できなかったため、レコード 12 が現在のレコードになりました。
(Field2>= AAA AND (Field2 <= BBB AND (Field1 >= AAA) AND (Field1 <= BBB))))
MicroKernel エンジンはレコード 1、2、4、5、6、7、8、および 9 を取得し、ステータス コード 64 を返します。 最初の 3 つの条件は最初のキー セグメントに対して最適化されませんが、これらはすべて AND で結合されているため、4 番目の条件は検索を最適化するのに使用されます。2 番目の条件は、4 番目の条件の直後に発生すれば最適化することができます。しかし、キー セグメントに関連する位置がずれているため、最適化されません。1 つのキー セグメントのみが最適化されるため、最適化条件を満たす最後に調べたレコードは、レコード 12 になります。Pervasive.SQL 2000 SP3 には不具合があり、最適化可能な条件は最初に発生しない限り、最適化を妨げられることに注意してください。 したがって、SP3 エンジンは同様のレコードを取得しますが、ステータス コード 9 を返します。