Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: MS SQL & Oracle 10 g  [new]
Iura
Member

Откуда:
Сообщений: 138
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()
7 июн 06, 15:38    [2750142]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.!! wrote:
> 2locky
> чтоб что-то доказать лучше напишите простенькую функцию upper() на t-sql
> и clr и сравните на мульонной табличке, а потом сравните с нативным SQL.
а вот давайте сравним
for i = 0 to 10 do
  for j = 0 to 10000000 do ;
и
  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

7 июн 06, 15:40    [2750155]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
locky
Что-то мне подсказывает

Если внутренний голос говорит вам, что вы все сделали правильно, не обольщайтесь, возможно, это спам. (С)

Протрать 10 минут напиши upper() и замерь. а мы все рассставим по местам. :)
7 июн 06, 15:45    [2750194]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
2Iura
объясни внятно задачу, а то щас выснится что база тебе нужна лишь для того, чтоб складывать предложения.
7 июн 06, 15:52    [2750244]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Iura
Member

Откуда:
Сообщений: 138
Yo.!!
2Iura
объясни внятно задачу, а то щас выснится что база тебе нужна лишь для того, чтоб складывать предложения.


Принял идею!
7 июн 06, 15:55    [2750263]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

7 июн 06, 16:27    [2750416]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
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'
на милинах строк.
7 июн 06, 16:40    [2750483]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.!! wrote:
> Автор: Yo.!!
> 2locky
> попробую на пальцах:
> select tsql_upper(filed) from table where id=1
> и
> select clr_upper(filed) from table where id=1
> вполне вероятно и не будут особо различатся по времени, но меня интересует
для "палечных": гонялся цикл на 100000 итераций. результат - приведен выше.
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'
> на милинах строк.
select max(valuechar) from value_t
9 секунд

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

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

     [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("");
     }

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

7 июн 06, 18:58    [2751206]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Вдогонку: value_t - 9,010,032 строк.


--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

7 июн 06, 19:00    [2751210]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Apex
Member

Откуда: Made in USSR
Сообщений: 3910
А насколько чистый был эксперимент? Экземпляр БД перезапускался перед прогонами? Есть подозрение, что разница во времени связана с дисковыми операциями.
13 июн 06, 16:48    [2766612]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
andsm
Member

Откуда: Москва
Сообщений: 1320
Блог
fn_VirtualNumber_clr не хватает атрибута о том что это deterministic функция. Этот атрибут может ускорить выполнение.
13 июн 06, 17:30    [2766931]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
хламист
Guest
Apex
А насколько чистый был эксперимент? Экземпляр БД перезапускался перед прогонами? Есть подозрение, что разница во времени связана с дисковыми операциями.

Когда-то тоже ставил подобные эксперименты, с перезапусками и т.п, результат похожий - вызов clr функции в 1.5-2 раза быстрее вызова аналогичной t-sql функции
14 июн 06, 12:44    [2769316]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

14 июн 06, 12:59    [2769421]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
да ерунда - тест во первых не тот что я хотел, а во вторых наверника не чистый. правда сам тоже тест не осилил, как я понял без 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
14 июн 06, 13:22    [2769548]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

14 июн 06, 13:30    [2769586]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
locky
Не осилить GUI - это рулезь ;-)

ну судя по гуглу я не один такой, без смеха куда там можно писать запросы ?? поскольку субд XE ничерта кроме студии нет, куда вот этот код можно писать ?

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

это же очевидно, потому что нет переключений между CLR и SQL OS. вот осилю студию посмотрим на мои цифры :)
14 июн 06, 13:50    [2769694]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

14 июн 06, 14:04    [2769783]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
locky

можно юзать QA от 7-2000, можно с сайта взять тулзу размером в метр -
умеет выполнять запросы (хотя вид - поделка на коленке). Навскидку - не
помню, но с Экпрессом вроде как идет командно-строчная утиль, нечто
вроде isql или osql.

т.е. заплатив туеву хучу бабла за студию юзер на нем элементарно запрос отладить не может и эти люди мне тут рассказывают ужасы про оракловые тулзы ...
к стате я нашел как можно выкрутится, если в процедуре выделить фрагмент то его можно выполнить, но приходится вырезать оператор GO и отладить/посмотреть план уже никак ... в osql у меня даже Ctr+V неработает
14 июн 06, 14:57    [2770128]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

14 июн 06, 15:03    [2770155]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
и еще теоритический вопрос: я могу делать CREATE ASSEMBLY C# кода или я обязан чем-то сначала dll делать ?
14 июн 06, 15:03    [2770162]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
locky

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

ага, а теперь попробуй мышой T-SQL нарисовать
14 июн 06, 15:05    [2770173]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Yo.!! wrote:
> Добавить новый Queries.
> шорткат для запуска - пока не искал, в поп-ап меню - run.
>
> ага, а теперь попробуй мышой T-SQL нарисовать
Чувак! Я нихрена не понял из того, что ты сказал! Но твои слова
достучались до моего сердца! Я помогу тебе! (С) Пыхарь и хроник.

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

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


--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

14 июн 06, 15:14    [2770225]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
текстовый !? доберусь до дому буду искать, я все меню облазил, в database project было New Query, его же можно с Object browser правой кнопки мыши запустить - это для полных мудаков рисовать SQL запросы мышой.
14 июн 06, 15:23    [2770281]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

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

14 июн 06, 15:37    [2770362]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL & Oracle 10 g  [new]
Yo.!!
Guest
locky

Solution Explorer\Queries
правой - Add new item\SQL Script.
есть там и Database Query - оно таки да, визуальное.

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

ЗЫ мне интересно это только у меня не хватает нтуиции искать запуск t-sql скриптов в sql query дизайнере в разделе add new item правда я признатся еще не нашел даже как SQL запрос с клавы вбить...
14 июн 06, 15:49    [2770424]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить