Не извлекайте all
ничего, если вы не уверены, что набор данных очень мал, порядка десятков записей максимум.Извлечение всех пользователей - это путь к катастрофе, поскольку использование памяти этой операцией будет линейно увеличиваться с количеством пользователей в вашей системе.
Вы должны использовать find
или where
методы при поиске подмножеств в большинстве случаев, если вы не можете быть абсолютно уверены, что количество задействованных записей тривиально.
Я бы даже рекомендовал использовать select_values
или select_rows
, когда все, что вам нужно, это чуть-чутьданных без издержек на модель, что хорошо работает для больших табличных списков.
Помните, что при загрузке модели вы загружаете все , связанное с ней по умолчанию.Для пользователей это может включать их расширенную биографию, их адрес, их любимый цвет, их электронную почту, их пароль, и все, что вы используете, это их имя, прежде чем выбросить этот объект.Извлекайте только то, что вам нужно, если производительность важна.
Почти всегда ошибочно иметь в контроллере следующее:
@users = Users.all
Что вам нужно сделать, это разбить на страницы или эту страницубудет становиться все медленнее, так как все больше пользователей регистрируются в вашей системе.В какой-то момент страница никогда не будет отображаться должным образом, поскольку время ожидания истечет первым.