This is a mirror of official site: http://jasper-net.blogspot.com/

Использование SQLCLR для увеличения производительности

| Tuesday, March 23, 2010
Начиная c MS SQL Server 2005 в распоряжение разработчиков баз данных была добавлена очень мощная технология SQL CLR.

Эта технология позволяет расширять функциональность SQL сервера с помощью .NET языков, например C# или VB.NET.

Используя SQL CLR можно создавать написанные на высокопроизводительных языках свои хранимые процедуры, триггеры, пользовательские типы и функции, а также агрегаты. Это позволяет серьезно повысить производительность и расширить функциональность сервера до немыслимых границ.

Рассмотрим простой пример: напишем пользовательскую функцию разрезания строки по разделителю используя SQL синтаксис и SQL CLR на базе C# и сравним результаты.

Пользовательская функция, возвращающая таблицу

   CREATE FUNCTION SplitString (@text NVARCHAR(max), @delimiter nchar(1))
   RETURNS @Tbl TABLE (part nvarchar(max), ID_ORDER integer) AS
   BEGIN
     declare @index integer
     declare @part  nvarchar(max)
     declare @i   integer
     set @index = -1
     set @i=1
     while (LEN(@text) > 0) begin
       set @index = CHARINDEX(@delimiter, @text)
       if (@index = 0) AND (LEN(@text) > 0) BEGIN
         set @part = @text
         set @text = ''
       end else if (@index > 1) begin
         set @part = LEFT(@text, @index - 1)
         set @text = RIGHT(@text, (LEN(@text) - @index))
       end else begin
         set @text = RIGHT(@text, (LEN(@text) - @index))
       end
       insert into @Tbl(part, ID_ORDER) values(@part, @i)
       set @i=@i+1
     end
     RETURN
   END
   go


Эта функция разрезает входную строку используя разделитель и возвращает таблицу. Применять такую функцию очень удобно, например, для быстрого заполнения временной таблицы записями.

   select part into #tmpIDs from SplitString('11,22,33,44', ',')

Read more: habrahabr.ru

Posted via email from jasper22's posterous

0 comments: