Data.SqlExpr.TCustomSQLDataSet.GetMetadata
Delphi
property GetMetadata: Boolean read FGetMetadata write FGetMetadata default True;
C++
__property bool GetMetadata = {read=FGetMetadata, write=FGetMetadata, default=1};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
property | published | Data.SqlExpr.pas Data.SqlExpr.hpp |
Data.SqlExpr | TCustomSQLDataSet |
説明
SQL データセットが、データと共にメタデータ情報をフェッチするかどうかを示します。
GetMetadata を使用すると、データベース オブジェクトに関するメタデータのフェッチの、オン/オフを切り替えることができます。 GetMetadata を False に設定すると、インデックス情報取得のための追加 SQL が実行されないため、パフォーマンスが向上します。 しかし、GetMetadata を False に設定すると、データセット プロバイダを介してリンク付けされているクライアント データセットを使用してデータを更新する場合に、遅くなる場合があります。これは、リゾルバが、更新を実行するために最適化された SQL を生成できないためです。
GetMetadata は、インデックスを必要とするオペレーションを実行する場合には、True にしておなければなりません。 これらのオペレーションには、マスタ/詳細関係の設定、クライアント データセットからのデータの更新(プロバイダの UpdateMode が upWhereAll ではない場合)、Blob データの遅延フェッチなどが挙げられます。 集計関数または GROUP BY 句、もしくはそれら両方を同時に保有する SQL クエリの場合にも、True にしなければなりません。
読み取り専用でデータセットをフェッチする場合には、GetMetadata を False に設定します。
メモ: iOS IBLite コード スニペット で、TSqlQuery の GetMetadata は False に設定されています。これは、データセットのオープン時に開始されるトランザクションの数を減らすためです。