範囲とフィルタの相違点の理解

提供: RAD Studio
移動先: 案内検索

範囲でのレコードの制限 への移動


範囲もフィルタも、表示されるレコードを、入手可能な全レコードのうちの一部に限定する点では同じですが、その方法が異なります。範囲では、指定された 2 つの境界値の間にある、連続するインデックスの付いた一連のレコードが抜き出されます。たとえば、姓でインデックス付けされた従業員データベースで、範囲を適用して、姓が "Jones" より大きく "Smith" より小さい従業員をすべて表示するような場合です。範囲はインデックスに依存しているため、範囲の定義に使用できるインデックスを現在のインデックスに設定する必要があります。レコードをソートするためにインデックスを指定する場合と同様に、IndexName プロパティか IndexFieldNames プロパティのどちらかを使って、範囲を限定するためのインデックスを割り当てることができます。

一方、フィルタでは、インデックス付けされているかどうかに関係なく、指定された条件を満たすレコードの任意の集合が抜き出されます。たとえば、従業員データベースにフィルタを適用して、カリフォルニア在住で勤続 5 年以上の従業員をすべて表示するような場合です。フィルタでは、インデックスを適用できる場合はそれを利用できますが、フィルタはインデックスには依存しません。アプリケーションでデータセットをスクロールするにつれて、フィルタが 1 レコードずつ適用されます。

一般に、フィルタの方が範囲より柔軟性があります。ただし、データセットが大きくて、アプリケーションにとって重要なレコードが連続的にインデックス付けされたグループに既にブロック化されている場合は、範囲の方が効率的です。非常に大きいデータセットの場合は、クエリタイプ データセットの WHERE 句を使用してデータを選択すると、さらに効率的です。クエリの指定の詳細については、「クエリタイプ データセットの使用」を参照してください。

関連項目