セットベースからレコード単位への操作の変換
次のステートメントとメソッドを使用して、アプリケーションとデータベース間の通信を減らすことにより、パフォーマンスを向上させることができます。
- delete_from
- update_recordset
- insert_recordset
- RecordSortedList.insertDatabase
- RecordInsertList.insertDatabase
状況によっては、これらのレコード セット ベースの操作をより低速のレコードごとの操作に変換できます。 次のテーブルは、これらの状況を識別します。
状況 | delete_from | update_recordset | insert_recordset | RecordSortedList, RecordInsertList | 上書きに使用 |
---|---|---|---|---|---|
非 SQL テーブル | 有 | 有 | 有 | 有 | 該当なし |
アクションの削除 | 有 | 無 | 無 | 無 | skipDeleteActions |
データベース ログが有効になっています。 | 有 | 有 | 有 | 無 | skipDatabaseLog |
オーバーライドされたメソッド | 有 | 有 | 有 | 有 | skipDataMethods |
警告はテーブルの設定をします。 | 有 | 有 | 有 | 無 | skipEvents |
テーブルの ValidTimeStateFieldType プロパティがなし以外の値に設定されています。 | 有効 | 有効 | 有効 | 有効 | 該当なし |
「上書きに使用」列で表示される skip* 設定を使用して、パフォーマンスに悪影響を与える 1 つまたは複数の要因を明示的にスキップまたは無視できます。 何らかの理由で、前述の SQL 操作のいずれかがレコードごとの操作にダウングレードされた場合、すべての skip* 設定は無視されます。 たとえば、次のコードでは、コンテナーまたはメモ フィールドが myTable で定義されている場合はこの方法をスキップする必要があると明確に示されていても、myTable テーブルで挿入メソッドが実行されます。
public void tutorialRecordInsertList()
{
MyTable myTable;
RecordInsertList insertList = new RecordInsertList(
myTable.TableId,
True);
int i;
for ( i = 1; i <= 100; i++ )
{
myTable.value = i;
insertList.add(myTable);
}
insertList.insertDatabase();
}