Использование Recursive с CTE в SQL Query vs. Recursive в C# - PullRequest
0 голосов
/ 27 апреля 2020

Я изучал, какой подход лучше оптимизирует мою систему, будь то использование рекурсии в моей хранимой процедуре (SQL) или использование рекурсии в C#.

Я прочитал две точки зрения, где одна объяснила, что использование рекурсивного алгоритма в c# является более сложным и медленным, но решается с помощью оптимизации хвостового вызова , но C# не поддерживает это .

С другой стороны, я прочитал ветку, где она используется в их программе, написанной в C# для уменьшения нагрузки на базу данных.

Я хочу знать, какая из них лучше система, которая будет хранить и извлекать тысячи записей.

1 Ответ

1 голос
/ 27 апреля 2020

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

Вы не указали, что пытаетесь делать. Но я ожидаю, что рекурсивный CTE будет работать лучше в базе данных, а не в приложении, по следующим причинам:

  • У вас нет накладных расходов при нескольких вызовах в базу данных.
  • Промежуточные результаты могут быть сохранены во внутреннем формате базы данных.
  • Вам не нужно возвращать данные в приложение и передавать их обратно в базу данных.

Кроме того, некоторые вещи, к которым вы можете обратиться с помощью рекурсии в C#, могут быть лучше реализованы с использованием конструкций SQL, таких как оконные функции.

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