getCollection() - получает массив объектов.
Если нужно получать не целиком объекты, а какие-либо данные, например id объекта, можно воспользоваться пользовательским запросом, который вернет массив только с необходимыми данными.
Например, этот запрос получает все объекты текущего пользователя.
На выходе - большая простыня данных. А если нужны только id, user_id, то проще воспользоваться обычным запросом.
На выходе - аккуратный массив только с необходимыми данными.
Проведем опыт: сравним обычный запрос с выборкой объектов.
Дано: 140 объектов.
1. getCollection(): страница не отвечает, расход памяти - 87,5 МБ, время - 1,5 минуты.
2. Запрос: 16,9 кб, 147 мс.
Дано: 1 объект.
1. getCollection(): страница не отвечает, расход памяти - 72,6 кб, время - 470мс.
2. Запрос: 523 б, 135 мс.
Как видно, с небольшим количеством объектов разница не слишком большая.
Разумеется, это не для всех случаев, т.к. в первом случае получаем уже объект, а во втором - только массив, с которым нужно будет проводить еще некоторые действия.
Ссылки на подобные материалы:
Оптимизация чтения ресурсов MODX Revolution
Советы по оптимизации сайта штатными средствами MODX
Гонки на скорость, часть вторая. Ускорение Modx Revo более чем в 8 раз