パフォーマンスを向上させ、アプリケーションとデータベース間の通信を減らすには、次のステートメントとメソッドを使用します。
- delete_from
- update_recordset
- insert_recordset
- RecordSortedList.insertDatabase
- RecordInsertList.insertDatabase
場合によっては、これらのレコード セット ベースの操作をレコードごとの操作に変換すると、パフォーマンスが低下する可能性があります。 次のテーブルは、これらの状況を識別します。
| 状況 | delete_from |
update_recordset |
insert_recordset |
RecordSortedList、RecordInsertList |
上書きするために使用します |
|---|---|---|---|---|---|
| 非 SQL テーブル | 有 | 有 | 有 | 有 | 該当なし |
| アクションの削除 | 有 | いいえ | いいえ | いいえ | skipDeleteActions |
| データベース ログが有効になっています。 | 有 | 有 | 有 | いいえ | skipDatabaseLog |
| オーバーライドされたメソッド | 有 | 有 | 有 | 有 | skipDataMethods |
| テーブルに警告が設定されています。 | 有 | 有 | 有 | いいえ | skipEvents |
| テーブルの ValidTimeStateFieldType プロパティがなし以外の値に設定されています。 | 有 | 有 | 有 | 有 | 該当なし |
パフォーマンスに悪影響を与える 1 つ以上の要因を明示的にスキップまたは無視するには、[オーバーライドに使用] 列の skip* 設定を使用します。 前述の 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();
}