「refRecId」というフィールド/列が1つしかない、完全に空白のカスタムテーブル(DatabaseLogFixLog)があります。SysDatabaseLog(ログ)に参加しています。計画では、SysDatabaseLogをバッチで更新し、SysDatabaseLogを更新するときに、更新した行のrecIdを挿入します。私のSysDatabaseLogには370万件のレコードがあります。以下に示すnotexistsjoinとouterjoinの両方を試しました。私のコードの何が問題になっていますか?どちらもシステムを完全にロックし、デバッガーはループ内に入りません。
外部参加:
updateCounter = 10;
while select forupdate log
order by CreatedDateTime, RecId
outer join databaseLogFixLog
where databaseLogFixLog.RefRecId != log.RecId
{
counter++;
if (counter > updateCount)
break;
info(strfmt("%1", counter));
}
info(strfmt("Done updating %1", counter));
Notexistsが参加します:
updateCounter = 10;
while select forupdate log
order by CreatedDateTime, RecId
notexists join databaseLogFixLog
where databaseLogFixLog.RefRecId == log.RecId
{
counter++;
if (counter > updateCount)
break;
info(strfmt("%1", counter));
}
info(strfmt("Done updating %1", counter));