性能服务器脚本

Performance server scripting

我 table 将多个 customerKey 值分配给一个数值;我编写了一个脚本,其中 foreach 行数据我扫描整个 table 以查找分配给当前 customerKey 的所有值和 return 最高的值;

我遇到了性能问题 - 脚本每秒处理大约 10 条记录 - 有什么改进方法或提出替代解决方案的想法吗?

function getLastest() {
    var date = app.models.magicMain.newQuery();
    var date_all = date.run();

    date_all.forEach(function(e) { // for every row of date_all
        var temp = date_all.filter(function(x) {
            return x.SubscriberKey === e.SubscriberKey; // find matching records for the current x.SubscriberKey
        });
        var dates = [];
        temp.forEach(function(z) { // get all matching "dates"
            dates.push(z.Date);
        });
        var finalValue = dates.reduce(function(a, b) { // get highest dates value (integer)
            return Math.max(a, b);
        });

        var record = app.models.TempOperatoins.newRecord(); // save results to DB
        record.email = e.SubscriberKey.toString() + " " + finalValue.toString();
        app.saveRecords([record]);
    });
}

我唯一的建议是添加:

var recordstosave = [];

在函数的顶部。 然后将 app.saveRecords([record]) 替换为 recordstosave.push(record).

最后在 foreach 函数之外执行 app.saveRecords(recordstosave)。

我看到处理时间的主要改进是这样做而不是在循环中单独保存每条记录。