Эффективный способ извлечения нескольких объектов из базы данных - PullRequest
1 голос
/ 24 сентября 2010

быстрое задание сегодня ... что более эффективно и есть большая разница в производительности между этими операциями SQL Server.

  1. выбрать четыре объекта из базы данных в четырех отдельных запросах на выборку (просто извлекая их по идентификатору) за одну транзакцию или

  2. выберите его в одном запросе (конечно, сложнее, с объединениями).

Я скажу вам, что я предпочел бы первое решение, но мне нужно знать, гораздо ли оно менее эффективно (если оно вообще менее эффективно).

Спасибо за любое мнение ..

Ответы [ 3 ]

2 голосов
/ 24 сентября 2010

Как правило, несколько запросов менее эффективны, поскольку для каждого из них может потребоваться обмен данными в сети и некоторые другие издержки.Самое эффективное, что вы могли бы сделать, - это получить именно те данные, которые вам нужны, за наименьшее количество необходимых запросов.

С другой стороны, если вы используете пакетную обработку, вы можете выполнить несколько запросов за одну поездку базы данных, чтозаймет примерно столько же времени, что и доступ к объектам в одном запросе.

, если вы загружаете только пару объектов, это не имеет большого значения.Поддерживаемость бизнес-логики, которая, скорее всего, зависит от выбранного вами решения, является более важной.

Сложность соединений и строительных объектов может быть выполнена с помощью ORM.Вам не нужно реализовывать такие вещи самостоятельно.С NHibernate вы получаете возможность извлекать объекты, используя сложные запросы или отдельные экземпляры по идентификатору.И - он также поддерживает пакетную обработку ADO.NET и некоторые другие важные улучшения производительности.

1 голос
/ 24 сентября 2010

Вариант 2 будет быстрее, потому что он сокращает сетевые "поездки". Отправка каждого запроса, затем ожидание, пока сервер компилирует план запроса и выполняет его, повторяется для каждого отправляемого вами запроса; если вы можете получить нужную информацию из одного запроса, она обычно будет быстрее. Однако с точки зрения производительности это, вероятно, будет заметно только в том случае, если вы запрашиваете сотни или тысячи очень «широких» записей.

1 голос
/ 24 сентября 2010

Ваш вопрос немного тонок в информации ... Если объекты находятся в одной и той же таблице, их, вероятно, следует выбрать в одном запросе, особенно если вы уже знаете их идентификаторы.

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