Я - разработчик C#, который сделал некоторую основную работу базы данных в T-SQL. Однако я должен записать очень сложную хранимую процедуру, много больше моего знания T-SQL.
Будет запись хранимой процедуры в C# с помощью .net CLR в качестве части SQL Server, 2008 заставляет мою хранимую процедуру быть менее эффективной, чем если бы это было записано в T-SQL? Различие (если таковые имеются) значительно? Почему?
CLR
требуют некоторой коммуникационной головки (передавать данные между CLR
и SQL Server
)
Решеновое правило:
Если ваша логика в основном включает в себя преобразования массивных наборов данных, которые могут быть выполнены с использованием заданных операций, затем используют TSQL
.
Если ваша логика в основном включает в себя сложные вычисления относительно небольшого количества данных, используют CLR
.
С заданными операциями гораздо больше можно сделать, чем кажется. Если вы разместите свои требования здесь, наверное, мы сможем помочь.
IMHO также важно, чтобы информация сеанса менялась после успешного входа в систему. Сохранение сведений о сеансе в базе данных не выполняется из-за инъекций.
-121--3579475-Просто создайте переменную запроса перед определениями представления и задайте ее значение при получении ее из представления (с помощью кода примера):
current_request = None
foo(request):
current_request = request
# stuff here
bar()
# more stuff here
bar():
# stuff here
baz()
# more stuff here
baz():
# do something with currest_request here
См.: Примечания к области переменных Python
Обновление: Этот вопрос очень похож на ваш, и принятое решение в основном создает
-121--4518479-См. раздел Производительность интеграции CLR :
В этом разделе рассматриваются некоторые из варианты дизайна, которые улучшают производительность Microsoft SQL Server интеграция с Microsoft .NET Среда выполнения общего языка рамка (CLR).