Salesforce: C# Api сравнить с ApexDataloader

У меня проблема с производительностью в salesforce. Я пытаюсь загрузить таблицу из salesforce в Excel cvs, для этого я протестировал ApexDataLoader и обнаружил, что загрузка всей таблицы потенциальных возможностей для моей организации занимает около 4~5 минут и около 60 000 записей.,

Теперь я хочу сделать то же самое с кодом C#, для этого я пишу этот код:

        var user = "xxx";
        var password = "xxx";
        var token = "xxx";
        var sforceService = new SforceService();
        var login = sforceService.login(user, String.Concat(password, token));
        sforceService.Url = login.serverUrl;
        sforceService.SessionHeaderValue = new SessionHeader { sessionId = login.sessionId };
        var query = "The full query that I took from ApexDataLoder";

        var startTime = DateTime.Now.TimeOfDay;
        var firstTime = DateTime.Now.TimeOfDay;
        var result = sforceService.query(query);
        int i = 0;
        while (!result.done)
        {
            var endTime = DateTime.Now.TimeOfDay;
            Debug.Print(endTime.Subtract(startTime) + "    " + i * result.records.Count() + " - " + (i + 1) * result.records.Count() +
                "        Time from start: " + endTime.Subtract(firstTime));
            startTime = DateTime.Now.TimeOfDay;
            result = sforceService.queryMore(result.queryLocator);

            i++;
        }

После нескольких строк я увидел, что я прочитал всего 2000 строк (из 60 000) в 2 миниатюрах.

Это значит, что для получения всей таблицы мне понадобится 60 минут.

Почему такая большая разница между этим ApexDataLoader (5 минут) и моим кодом? что я делаю не так?

Спасибо за помощь!

1 ответ

Я обнаружил 2 вещи, которые действительно улучшают производительность, во-первых, установить EnableDecompression в true

sforceService.EnableDecompression = true;

И второе основано на этом потоке, лучше сделать запрос "выбрать Id из Lead" и собрать все идентификаторы, а затем выполнить многопоточную обработку для получения данных с помощью функции получения.

Надеюсь, что это поможет людям, и если у кого-то есть другие приемы улучшения, пожалуйста, дайте мне знать

Другие вопросы по тегам