Давно хотел эту тему поднять.
Вот такая замечательная конструкция SELECT COUNT() позволяет посчитать количество записей.
НО данная конструкция ест лимиты, т.е. если вернуло =1000 то это равносильно тому чтобы получили из базы 1000 записей.
Теперь самое интересное. Лимит у нас 50 000 на запрос, как посчитать количество всех записей в базе если их например будет 250 000?
Пока вопрос чисто теоретический, пока нет времени воспроизвести.
Кто сталкивался с такой задачей, поделитесь опытом.
Использую такие вещи чисто для сбора статистики и только в батчах.
Как вариант (правда не очень крутой)
Сделать какой-то кастомный объект с количеством. (id/object_name/count)
И повесить триггер на интерсующие нас события (insert/delete) и обновлять информацию в этом объекте.
Хотя вариант кажется адовым костылём.
Если что, сам таким не занимался.
Может уже есть какой-то "официальный" способ?
Инфа о количестве записей объектов представлена в Storage Usage, как вариант можно сделать запрос https://<instance>.salesforce.com/setup/org/orgstorageusage.jsp?id=<Your Org Id> и распарсить ответ. Вот ссылка по теме: http://salesforce.stackexchange.com/questions/9474/can-we-query-the-info-from-data-management-storage-usage-through-soap-api
Проблема в том что это как-то кривовато да и не наложишь условий на запрос
я не знал! совсем не удобно.
плюс я заметил, что COUNT() отказывается считать если в условие есть шифрованные поля. Например COUNT() ... where шифрПоле__с != null
предполагаю, что шифрПОля - это вообще отдельная тема.