let's learn how RecordInsertList makes difference in your system performance.
As we all know insert() method and RecordInsertList both are used to insert the record into database. but here we will discuss when we should use insert and when we should use RecordInsertList.
insert() method will insert only one record at a time. This is required to use when there is any dependent action i.e. if you want to store RecordId of header table into line table also if there is some code which is written in insert method and we want to call it then we need to use insert method.
RecordInsertlist will insert multiple records in database by one DB trip. This is faster than insert method.
X++ Code For insert() method
Create runnable class and add below code into it, make sure you have sample table created (TestInsertRecordTable with 2 fields RecordNumber and Description)
internal final class TestRecordListInsertJob1
{
public static void main(Args _args)
{
int i;
int timerStart, timerEnd;
str timeConsumed;
TestInsertRecordTable testInsertRecordTable;
timerStart = timeNow();
ttsbegin;
for (i = 1; i<10000; i++)
{
testInsertRecordTable.RecordNumber = i;
testInsertRecordTable.Description = 'TestDescription';
testInsertRecordTable.insert();
}
ttscommit;
timerEnd = timeNow();
timeConsumed = timeConsumed(timerStart, timerEnd);
info(strFmt("Insert method result: Added %1 rows in %2 seconds", i, timeConsumed));
}
}
Result of insert method took 45 seconds to insert 10000 records.
X++ code for RecordInsertList
Create runnable class and add below code into it.
internal final class TestRecordInsertJob2
{
public static void main(Args _args)
{
int i,timerStart, timerEnd,row;
str timeConsumed;
TestInsertRecordTable testInsertRecordTable,newTestInsertRecordTable;
RecordInsertList testInsertRecordTableList;
testInsertRecordTableList = new RecordInsertList(tableNum(TestInsertRecordTable));
timerStart = timeNow();
row = 1;
ttsbegin;
for (i = 10001; i<20000; i++)
{
newTestInsertRecordTable.RecordNumber = i;
newTestInsertRecordTable.Description = 'TestDescriptionRecordInsertList';
testInsertRecordTableList.add(newTestInsertRecordTable);
row++;
}
testInsertRecordTableList.insertDatabase();
ttscommit;
timerEnd = timeNow();
timeConsumed = timeConsumed(timerStart, timerEnd);
info(strFmt("RecordInsertList result : Added %1 rows in %2 seconds", row, timeConsumed));
}
}
Result of RecordInsertList took 2 seconds to insert 10000.
RecordInsertList is far faster than insert() so always prefer it in your logic.
No comments:
Post a Comment