powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL & Oracle 10 g
25 сообщений из 70, страница 2 из 3
MS SQL & Oracle 10 g
    #33778094
Iura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
locky
nkulikov wrote:
> Автор: nkulikov
> На самом деле в чем-то Yo!! прав.
> SQL запрос более вероятно выполнится быстрее чем код на C#. Только на
> эту проблему нужно смотреть несколько иначе IMHO.
>
> Давай те смотреть на на for i=1 to 100000 do; а на более серьезные вещи
> типа select'oв
>
> Задача поиска слона в африке
> Есси мы пишем ее на С# это будет
Может Yo! и прав, и может, правы и Вы, решая задачу поиска сферического
коня в вакууме... однако исходный вопрос был "разбиение текста на
предложения: T-SQL vs C#"
может быть! есть декларативный язык который это умеет... но T-SQL явно
не из из числа. поэтому моя имха такая: выделение предложений из текста
при помощи внешней процы написанной на c# будет быстрее, чем при помощи
процы на T-SQL, поскольку накладные расходы на "переключения контекста"
для вызова C# с лихвой покроют относительную неторопливость исполнения
T-SQL процедуры.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3


Думаю ты прав!
Хотя и часть логики (типа Insert, delete) мне тоже наду будет выполнить в dll, в общем счете это будет быстрее и проще чем писать на T-SQL. Работа в C# со строками лучше организована.

А может быть быстрее все написать на PL-SQL?

Вот пример. Делаем разбор предложения.

Друган, зайди пожалуйста на сайт lastgame.games.ru найди мне код для игрушки и скинь ее на мыло afrika@kenguru.com.su причем не забудь это сделать сегодняяя !!!!!

Использовать признак окончание предложения - . и ! не получается. Точка используется для электронных адресов, а кол-во ! знаков больше >1.

Если использовать T-SQL substring для получения каждого символа текста и предложения. Преполагаю, что быстродействие substring будет ниже чем stringbuilder.getchar()
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778104
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> 2locky
> чтоб что-то доказать лучше напишите простенькую функцию upper() на t-sql
> и clr и сравните на мульонной табличке, а потом сравните с нативным SQL.
а вот давайте сравним
Код: plaintext
1.
2.
for i =  0  to  10  do
  for j =  0  to  10000000  do ;
и
Код: plaintext
1.
2.
  for i =  0  to  10000000  do
   for j =  0  to  10  do ;

что быстрее? первый вариант, но это уже - отклонение от темы.
независимо от того, на чем писать - T-SQL или C# - задача разбивается на
2 этапа:
1. извлечь данные
2. преобразовать данные.

первый этап по любому будет выполнятся каким-нить select ... from ...
where ...
а вот второй этап (наиболее ресурсоемкий) - скорее всего выгоднее будет
писать на C# а не на T-SQL.
Что-то мне подсказывает, что оракловские regexp'ы реализованы в виде
некого бинарника, подключаемого по дефолту.
Если это так, то чем отличается ESP, написанная на C# и подключенная к
MS SQL от ESP, написанной (скорее всего) на С, и подключенной к ораклу?
Бантиками, разве что...
тем паче, что Вы сами то-что сказали "нативный upper" быстрее
самописного на T-SQL. Нативный upper реализован всё-таки в виде некой
сишной функции. Следовательно, более сложное преобразование строки будет
работать быстрее в виде реализации на C# (а не на T/PL-SQL).


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778129
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyЧто-то мне подсказывает
Если внутренний голос говорит вам, что вы все сделали правильно, не обольщайтесь, возможно, это спам. (С)

Протрать 10 минут напиши upper() и замерь. а мы все рассставим по местам. :)
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778151
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Iura
объясни внятно задачу, а то щас выснится что база тебе нужна лишь для того, чтоб складывать предложения.
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778162
Iura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!!2Iura
объясни внятно задачу, а то щас выснится что база тебе нужна лишь для того, чтоб складывать предложения.

Принял идею!
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778257
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> Что-то мне подсказывает
>
>
> Если внутренний голос говорит вам, что вы все сделали правильно, не
> обольщайтесь, возможно, это спам. (С)
>
> Протрать 10 минут напиши upper() и замерь. а мы все рассставим по местам. :)
upper писать не стал, поднял старый тестовый проект.
функция, которая из '123f' делает '0000000123f'.
т.е. определяет "числовую часть", добивает её нулями слева до 10-ти
символов и дописывает в конец строковую часть.
назначение - использование в сортировке (сортировать дома по номеру и т.д.).

на 100000 вызовов:
пустой цикл: 1913
t-sql 5980-1913=4067
crl 4496-1913=2583
время дано в милисекундах.
видим: ф-я написаная на C# быстрее ф-ии на T-SQL.

зы в шарпе не силен, может там и быстрее можно было сделать - не
задавался такой целью.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778310
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2locky
попробую на пальцах:
select tsql_upper(filed) from table where id=1
и
select clr_upper(filed) from table where id=1
вполне вероятно и не будут особо различатся по времени, но меня интересует

select * from table where tsql_upper(filed) = 'SHIT'
и
select * from table where clr_upper(filed) = 'SHIT'
на милинах строк.
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778805
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> Автор: Yo.!!
> 2locky
> попробую на пальцах:
> select tsql_upper(filed) from table where id=1
> и
> select clr_upper(filed) from table where id=1
> вполне вероятно и не будут особо различатся по времени, но меня интересует
для "палечных": гонялся цикл на 100000 итераций. результат - приведен выше.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
set nocount on
declare @d datetime,@i int,@j int,@s varchar( 512 )
set @i =  0 
set @d = getDate()
while @i <  100000  begin
  set @i = @I+ 1 
-- set @s = dbo.fn_virtualnumber('123a')
-- set @s = dbo.fn_virtualnumber_clr('123a')
end
select datediff(ms,@d,getdate())
go

> select * from table where tsql_upper(filed) = 'SHIT'
> и
> select * from table where clr_upper(filed) = 'SHIT'
> на милинах строк.
Код: plaintext
1.
select max(valuechar) from value_t
9 секунд

Код: plaintext
1.
select max(dbo.fn_virtualnumber(valuechar)) from value_t
2 минуты 33 секунд

Код: plaintext
1.
select max(dbo.fn_virtualnumber_clr(valuechar)) from value_t
1 минута 12 секунд.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
     [Microsoft.SqlServer.Server.SqlFunction]
     public static SqlString fn_VirtualNumber_clr(SqlString str)
     {
         if (str.IsNull) return str;
         int idx;
         String digits = "0123456789";
         idx = - 1 ;
         for (int i =  0 ; (i < str.Value.Length);i++ )
         {
             if (digits.IndexOf(str.Value[i]) == - 1 )
             {
                 idx = i;
                 break;
             }
         }
         if (idx == - 1 ) return str.Value.PadLeft( 8 , '0');
         else
         {
             return str.Value.Substring( 0 ,idx).PadLeft( 8 , '0') + 
str.Value.Substring(idx);
         };
         return new SqlString("");
     }

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create function fn_virtualnumber(@str varchar( 255 ))
returns varchar( 255 )
as begin
if @str is null return null
declare	@i int,@s varchar( 255 )

select @i = patindex('%[^0123456789]%',@str)
if @i =  0 
  select	@str = right('0000000000'+@str, 8 )
else set @str = 
right('0000000000'+substring(@str, 1 ,@I- 1 ), 8 )+substring(@str,@i, 255 )

  return (@Str)
end
GO

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33778809
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку: value_t - 9,010,032 строк.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33788178
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насколько чистый был эксперимент? Экземпляр БД перезапускался перед прогонами? Есть подозрение, что разница во времени связана с дисковыми операциями.
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33788374
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fn_VirtualNumber_clr не хватает атрибута о том что это deterministic функция. Этот атрибут может ускорить выполнение.
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33789899
хламист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ApexА насколько чистый был эксперимент? Экземпляр БД перезапускался перед прогонами? Есть подозрение, что разница во времени связана с дисковыми операциями.
Когда-то тоже ставил подобные эксперименты, с перезапусками и т.п, результат похожий - вызов clr функции в 1.5-2 раза быстрее вызова аналогичной t-sql функции
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33789963
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex wrote:
> А насколько чистый был эксперимент? Экземпляр БД перезапускался перед
> прогонами? Есть подозрение, что разница во времени связана с дисковыми
> операциями.
Нет, не перезапускался.
черезполносно запускался один и другой вариант, примерно раз по 20,
бралась средняя цифра.
Чтобы избежать влияния дисковых операций - рулил простым циклом (просто
Yo!! захотелось на таблице - зарулил на таблице).


>fn_VirtualNumber_clr не хватает атрибута о том что это deterministic
>функция. Этот атрибут может ускорить выполнение.
Надо попробовать - спасибо

>Когда-то тоже ставил подобные эксперименты, с перезапусками и т.п,
>результат похожий - вызов clr функции в 1.5-2 раза быстрее вызова
>аналогичной t-sql функции

MS когда-то публиковало статью, в которой пояснялось, почему CLR UDF
быстрее чем T-SQL. За неимением глубоких знаний .Net статью не осилил в
полном объеме :-(
Дело касалось не только скорости выполнения тела UDF (тут вроде всё
понятно), но и накладных расходов при вызове UDF.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790041
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ерунда - тест во первых не тот что я хотел, а во вторых наверника не чистый. правда сам тоже тест не осилил, как я понял без visual studio clr вообще не развернуть, пришлость качать... пля, уже ушло не одна пол-литра но так и не нашел в этой студии элементарного - куда запросы писать. в моей бетте хоть query analyzer был, тут его нет. попробую на выходных побороть эту студию и запустить тест, хотя сумневаюсь я, что я увижу что-то кроме очевидного:


Чтобы определиться с тем, когда использовать язык T-SQL, а когда — язык CLR, нужно помнить, что расширения CLR более уместны, когда необходим высокий уровень вычислений или манипуляций с текстом. Для задач, имеющих дело с большим количеством данных, решения на T-SQL лучше, чем решения на CLR, потому что T-SQL более тесно работает с данными и не требует сложных транзакций (многочисленных переходов) между CLR и SQL OS.
http://old.osp.ru/win2000/2005/08/034.htm
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790069
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> да ерунда - тест во первых не тот что я хотел, а во вторых наверника не
> чистый. правда сам тоже тест не осилил, как я понял без visual studio
Дайте текст теста (или описание) - какой Вы хотите. Осилим.

> clr вообще не развернуть, пришлость качать... пля, уже ушло не одна
> пол-литра но так и не нашел в этой студии элементарного - куда запросы
> писать. в моей бетте хоть query analyzer был, тут его нет. попробую на
> выходных побороть эту студию и запустить тест, хотя сумневаюсь я, что я
> увижу что-то кроме очевидного:
Не осилить GUI - это рулезь ;-)

> Чтобы определиться с тем, когда использовать язык T-SQL, а когда - язык
> CLR, нужно помнить, что расширения CLR более уместны, когда необходим
> высокий уровень вычислений или манипуляций с текстом. Для задач, имеющих
Собственно, в этом топике как раз такая задача и ставилась - парсинг текста.

> дело с большим количеством данных, решения на T-SQL лучше, чем решения
> на CLR, потому что T-SQL более тесно работает с данными и не требует
> сложных транзакций (многочисленных переходов) между CLR и SQL OS.
Поясните тогда, почему вызов "пустой" функции на CLR происходит быстрее,
чем на T-SQL.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790126
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyНе осилить GUI - это рулезь ;-)
ну судя по гуглу я не один такой, без смеха куда там можно писать запросы ?? поскольку субд XE ничерта кроме студии нет, куда вот этот код можно писать ?

lockyПоясните тогда, почему вызов "пустой" функции на CLR происходит быстрее,
чем на T-SQL.

это же очевидно, потому что нет переключений между CLR и SQL OS. вот осилю студию посмотрим на мои цифры :)
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790184
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> ну судя по гуглу я не один такой, без смеха куда там можно писать
> запросы ?? поскольку субд XE ничерта кроме студии нет, куда вот этот
> <http://old.osp.ru/win2000/2005/08/034_lis8.htm> код можно писать ?
можно юзать QA от 7-2000, можно с сайта взять тулзу размером в метр -
умеет выполнять запросы (хотя вид - поделка на коленке). Навскидку - не
помню, но с Экпрессом вроде как идет командно-строчная утиль, нечто
вроде isql или osql.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790419
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
можно юзать QA от 7-2000, можно с сайта взять тулзу размером в метр -
умеет выполнять запросы (хотя вид - поделка на коленке). Навскидку - не
помню, но с Экпрессом вроде как идет командно-строчная утиль, нечто
вроде isql или osql.

т.е. заплатив туеву хучу бабла за студию юзер на нем элементарно запрос отладить не может и эти люди мне тут рассказывают ужасы про оракловые тулзы ...
к стате я нашел как можно выкрутится, если в процедуре выделить фрагмент то его можно выполнить, но приходится вырезать оператор GO и отладить/посмотреть план уже никак ... в osql у меня даже Ctr+V неработает
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790443
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> Автор: Yo.!!
> locky
>
> можно юзать QA от 7-2000, можно с сайта взять тулзу размером в метр -
> умеет выполнять запросы (хотя вид - поделка на коленке). Навскидку - не
> помню, но с Экпрессом вроде как идет командно-строчная утиль, нечто
> вроде isql или osql.
>
>
> т.е. заплатив туеву хучу бабла за студию юзер на нем элементарно запрос
> отладить не может и эти люди мне тут рассказывают ужасы про оракловые
> тулзы ...
> к стате я нашел как можно выкрутится, если в процедуре выделить фрагмент
> то его можно выполнить, но приходится вырезать оператор GO и
> отладить/посмотреть план уже никак ... в osql у меня даже Ctr+V неработает
Со студией не пробовал, работал с MSSSC...
но, чуть покопавшись, file\new\project\other project
types\database\database project.
Добавить новый Queries.
шорткат для запуска - пока не искал, в поп-ап меню - run.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790448
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще теоритический вопрос: я могу делать CREATE ASSEMBLY C# кода или я обязан чем-то сначала dll делать ?
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790455
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Добавить новый Queries.
шорткат для запуска - пока не искал, в поп-ап меню - run.

ага, а теперь попробуй мышой T-SQL нарисовать
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790491
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> Добавить новый Queries.
> шорткат для запуска - пока не искал, в поп-ап меню - run.
>
> ага, а теперь попробуй мышой T-SQL нарисовать
Чувак! Я нихрена не понял из того, что ты сказал! Но твои слова
достучались до моего сердца! Я помогу тебе! (С) Пыхарь и хроник.

причем тут мыша? Ну объясните старику? Там ТЕКСТОВЫЙ редактор, садись да
тыркай по кнопкам.
При желании можно таки еще и шорткат назначить (Project.Run), вот только
все более-менее удобные шорткаты заняты, а разбираться, как назначить
шорткат для указанной области - мне лично влом, у меня есть "нормальная"
консоль.

зы и это человек кричал тут: да вы оракл просто готовить не умеете, ламеры!
ззы пока такие люди в стране совеЦЬкой еззь... (С) В.В.Маяковский.


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790521
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текстовый !? доберусь до дому буду искать, я все меню облазил, в database project было New Query, его же можно с Object browser правой кнопки мыши запустить - это для полных мудаков рисовать SQL запросы мышой.
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790572
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!! wrote:
> Автор: Yo.!!
> текстовый !? доберусь до дому буду искать, я все меню облазил, в
> database project было New Query, его же можно с Object browser правой
> кнопки мыши запустить - это для полных мудаков рисовать SQL запросы мышой.
Solution Explorer\Queries
правой - Add new item\SQL Script.
есть там и Database Query - оно таки да, визуальное.
--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
MS SQL & Oracle 10 g
    #33790618
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Solution Explorer\Queries
правой - Add new item\SQL Script.
есть там и Database Query - оно таки да, визуальное.

надеюсь ты про это ? и там add new item позволит запускать t-sql скрипты ??

ЗЫ мне интересно это только у меня не хватает нтуиции искать запуск t-sql скриптов в sql query дизайнере в разделе add new item правда я признатся еще не нашел даже как SQL запрос с клавы вбить...
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 2 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL & Oracle 10 g
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]