У меня есть класс пакетной вершины, где я создаю коллекции веб-сайтов и электронных писем, поэтому я могу использовать эти коллекции для фильтрации других других запросов, которые будут сделаны в коллекциях. Со всеми наборами наборов я хочу выполнить конечный цикл области для выполнения бизнес-процессов.Salesforce Batch Apex Class - запрос на большие наборы данных
Mockup:
for(Object o : scope)
{
listEmails.add(o.Email);
listWebsites.add(o.Websites);
}
Map<String, Account> accounts = Gather all accounts where website not in :listWebsties; //Website is key
List<String, Contact> contacts = Gather all contacts where email not in :listEmails; //Email is key
for(Object o : scope)
{
Account = accounts.get(o.website);
Contact = contacts.get(o.Email);
Perform business logic here
}
Проблема заключается в том, когда я запустить эту партию он остается обработку в течение нескольких часов. При работе с довольно небольшой базой данных это прекрасно работает. Но, работая в более крупной среде, возможно, это не лучшее решение.
Может ли кто-нибудь помочь мне ускорить пакетный процесс с более эффективным подходом?
Когда вы запускаете партию, какой размер партии вы поставляете? 'Id BatchId = Database.executeBatch (Batch, [What is this number?]);' Также вы можете опубликовать сводку журнала отладки для вашей партии, это выглядит так: 'Количество запросов SOQL: 0 из 100 \ n Количество строк запроса: 0 из 50000 и т. Д. Эти данные помогут определить, как вы можете ускорить его. –
Я не поставляю размер партии. Объем первого процесса, который я выполнял, составлял всего 300 записей. Таким образом, коллекция из 300 элементов списка используется для фильтрации других запрошенных объектов, т.е. учетных записей и контактов. Это те другие объекты, которые запрашиваются, что значительно замедляет процесс. –
Размер партии по умолчанию - 200, т. Е. Все, что вы запрашиваете в методе start(), разбивается на списки из 200, а 200 единиц передаются в область видимости в любой момент времени. Вы не можете обрабатывать все в основном запросе за один раз, поэтому я подозреваю, что вам может понадобиться переработать свою логику, чтобы учесть это. –