Как ускорить активную запись в rails3.2?Моя активная запись занимает более 3 минут для запросов - PullRequest
0 голосов
/ 09 октября 2018

Это мой запрос на активную запись для загрузки учетных записей относительно филиалов, областей и мандалов. Кто-нибудь может мне помочь в его оптимизации?

 HpEntry.includes(:area, :mandal, :branch)
        .where(:BranchId => 58, :AreaId => 117, :MandalId => 741)
        .last

1 Ответ

0 голосов
/ 09 октября 2018

В 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, что даст вам пониманиев то, что делает ваша база данных, и какие части вашего запроса являются самыми медленными.Это также даст вам представление о том, действительно ли внесенные вами изменения действительно помогают.

...