В 3.2 вы, вероятно, увидите некоторое увеличение производительности, явно указав order
, для которого вы хотите упорядочить результаты, и измените его так, чтобы вы могли вызывать .first
вместо .last
.
Например:
HpEntry.includes(:area, :mandal, :branch)
.where(:BranchId =>58, :AreaId => 117, :MandalId => 741)
.order('created_at DESC') # <= newest first
.first
Вы также можете повысить производительность, добавив индексы для столбцов, по которым вы ищете (BranchId
, AreaId
и MandalId
).В PostgreSQL вы получите максимальную выгоду, добавив три индекса, по одному на каждый из трех столбцов.Другие системы СУБД могут повысить производительность благодаря наличию составного индекса.
Как таковая, любая база данных, которую вы используете, будет полезна для изучения и понимания ее вывода EXPLAIN
, что даст вам пониманиев то, что делает ваша база данных, и какие части вашего запроса являются самыми медленными.Это также даст вам представление о том, действительно ли внесенные вами изменения действительно помогают.