Оптимизация использования запросов к базе данных - PullRequest
1 голос
/ 13 октября 2010

Быстрее ли выполнить один запрос к базе данных, который находит все результаты, необходимые для страницы, а затем выполнить несколько циклов по нему с помощью операторов if / else, чтобы извлечь то, что вы хотите показать в каждом разделе, или сделать несколько баз данных?запросы, выбирающие точные данные, которые вам нужны, а затем просто циклически перебирайте каждую из них в отдельности?

Например:

@completed = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ? AND host_tasks.completed IS NOT NULL", params[:id]], :order => "tasks.position")
@incomplete = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ? AND host_tasks.completed IS NULL", params[:id]], :order => "tasks.position")

Затем перебирайте каждую из них для отображения.Или просто:

@tasks = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ?", params[:id]], :order => "tasks.position")

Циклически перебирая @tasks дважды и показывая только, если @ tasks.completed имеет значение null, а не null?

Ответы [ 2 ]

1 голос
/ 13 октября 2010

Я думаю, что будет "быстрее" сделать один запрос, так как соединение с БД и вызов дорогой Вы используете сервер приложений или какой-либо другой пул соединений? это может помочь Зависит от того, сколько данных вы тоже возвращаете.

1 голос
/ 13 октября 2010

несколько поездок туда и обратно обходятся дорого, но выбор большего количества данных, чем требуется, также дорог. в большинстве случаев предпочтительным способом является только выбор точных данных с несколькими запросами в БД и не пытаться использовать сложную ненормальную бизнес-логику, но это зависит от варианта использования. Я рекомендую кеширование, кеширование, кеширование. Вы можете получить гигантские преимущества в производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...