Стоит ли использовать извлечение внешнего соединения с помощью NHibernate и Sql Server 2008? - PullRequest
4 голосов
/ 20 февраля 2010

При извлечении из внешнего соединения , документация Nhibernate гласит:

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

Я пытаюсь решить, следует ли использовать выборку внешнего соединения в моем текущем проекте (который использует NHibernate ). Для этого я собираюсь протестировать время загрузки с извлечением внешнего соединения и без него . Но я хотел бы знать, является ли это в целом хорошей или плохой стратегией при использовании Sql Server 2008 .

Как правило, лучше использовать извлечение внешнего соединения, чем не использовать Sql Server 2008?

Как определить, использовать его или нет? (кроме тестирования производительности и профилирования запросов)

Спасибо

1 Ответ

4 голосов
/ 20 февраля 2010

Странный вопрос. При необходимости используйте извлечение внешнего соединения; некоторые запросы потребуют извлечения внешнего соединения для некоторых объектов. Другие запросы не будут. Так что, если вам это не нужно, не пытайтесь получить извне с помощью внешних объединений. При использовании API-интерфейса ICriteria вы можете указать тип выборки для каждой ассоциации.

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

...