Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 12   вперед  Ctrl      все
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Опять. Говорю последний раз, их в fb c успехом заменют ХП

а это ничего, если мы будем сравнивать "наши" джойны функций, с "вашими" джойнами процедур?
правда будет сложно придумать место для сложностей, но ведь не это же главное, верно ?
29 июн 09, 15:10    [7355020]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
Опять. Говорю последний раз, их в fb c успехом заменют ХП

а это ничего, если мы будем сравнивать "наши" джойны функций, с "вашими" джойнами процедур?
правда будет сложно придумать место для сложностей, но ведь не это же главное, верно ?

Не главное, главное мир во всём мире.
29 июн 09, 15:15    [7355047]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Не главное, главное мир во всём мире.

вот и отлично.
кстати, прямым аналогом вашего курсора является

declare @i int;
select @i = i from table2;

м.б. сравнить что-нибудь более осязаемое?

З.Ы.
... пользовательские агрегатные функции, к примеру )
29 июн 09, 15:20    [7355073]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
select @i = i from table2;

Человек точно не знает, о чём говорит

Зайцев Фёдор
пользовательские агрегатные функции, к примеру )

Или автономные транзакции ...
29 июн 09, 15:25    [7355103]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
прямым аналогом вашего курсора является select @i = i from table2;

Чтобы прояснить некоторым, что такое всё-таки курсоры fb, переделаю вышеприведённый пример:

  EXECUTE BLOCK      returns (i INTEGER) AS
-- DECLARE VARIABLE  i INTEGER;
 DECLARE C CURSOR FOR (SELECT  i FROM table2);
 BEGIN
  OPEN C;
  WHILE (1 = 1) DO
  BEGIN
    FETCH C INTO :i;
    IF(ROW_COUNT = 0)THEN
      LEAVE;

  END
  CLOSE C;
  SUSPEND;
END
29 июн 09, 15:40    [7355217]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Зайцев Фёдор
прямым аналогом вашего курсора является select @i = i from table2;

Чтобы прояснить некоторым, что такое всё-таки курсоры fb, переделаю вышеприведённый пример:

  EXECUTE BLOCK      returns (i INTEGER) AS
-- DECLARE VARIABLE  i INTEGER;
 DECLARE C CURSOR FOR (SELECT  i FROM table2);
 BEGIN
  OPEN C;
  WHILE (1 = 1) DO
  BEGIN
    FETCH C INTO :i;
    IF(ROW_COUNT = 0)THEN
      LEAVE;

  END
  CLOSE C;
  SUSPEND;
END


вообще-то я в курсе.
кстати, сколько работает такой код для приведённого ранее примера?
29 июн 09, 15:50    [7355283]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
800 ms
29 июн 09, 15:53    [7355302]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
ABC_1982
Member

Откуда: Москва
Сообщений: 418
Желание увидеть что-то более прикладное лично у меня не уменьшилось. Можно увидеть?

P.S. После такой переделки хотелось бы также увидеть время выполнения.
P.P.S. Версия MS SQL Server какая для сравнения приводится?
29 июн 09, 15:53    [7355304]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Для тестов использовался mssql 2005
29 июн 09, 15:54    [7355311]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV

Чтобы прояснить некоторым, что такое всё-таки курсоры fb, переделаю вышеприведённый пример:

  EXECUTE BLOCK      returns (i INTEGER) AS
-- DECLARE VARIABLE  i INTEGER;
 DECLARE C CURSOR FOR (SELECT  i FROM table2);
 BEGIN
  OPEN C;
  WHILE (1 = 1) DO
  BEGIN
    FETCH C INTO :i;
    IF(ROW_COUNT = 0)THEN
      LEAVE;

  END
  CLOSE C;
  SUSPEND;
END


я так понимаю, что suspend вынесен из цикла по чистой случайности. иначе будет именно
declare @i int;
select @i = i from table2;
29 июн 09, 16:01    [7355345]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор

кстати, сколько работает такой код для приведённого ранее примера?

Не понял сначала фразу. Для примера, приведённого ранее, я уже результаты отписал.
29 июн 09, 16:02    [7355351]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV

Чтобы прояснить некоторым, что такое всё-таки курсоры fb, переделаю вышеприведённый пример:

  EXECUTE BLOCK      returns (i INTEGER) AS
-- DECLARE VARIABLE  i INTEGER;
 DECLARE C CURSOR FOR (SELECT  i FROM table2);
 BEGIN
  OPEN C;
  WHILE (1 = 1) DO
  BEGIN
    FETCH C INTO :i;
    IF(ROW_COUNT = 0)THEN
      LEAVE;

  END
  CLOSE C;
  SUSPEND;
END


я так понимаю, что suspend вынесен из цикла по чистой случайности. иначе будет именно
declare @i int;
select @i = i from table2;
Суровый человек. И ни фига так не будет. Что select @i = i from table2 может сделать с i?
SUSPEND вынесен только чтобы не зависеть от клиента. Честно - устал я объяснять.
29 июн 09, 16:09    [7355387]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
Что select @i = i from table2 может сделать с i?
SUSPEND вынесен только чтобы не зависеть от клиента. Честно - устал я объяснять.

буквально то же самое - @i получит значение i из какой-то строки table2
29 июн 09, 16:11    [7355401]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
FreemanZAV
Senya_L
Аналогов, я так понимаю, нет

execute block
При всем уважении... но не надо путать кислое с пресным. С ES можно сделать практически все, но от этого оно не станет похожим на конструкцию APPLY.
Зайцев Фёдор
так появились табличные функции?
Почти полным аналогом table valued function (TVF) в FB является селективная ХП (с блоком returns).
29 июн 09, 16:49    [7355590]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Senya_L
Почти полным аналогом table valued function (TVF) в FB является селективная ХП (с блоком returns).

знаю - работал и IB и FB. просто хотел подчеркнуть, что у FB нет никаких преимуществ при джойне процедур с функциями )
29 июн 09, 17:04    [7355657]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Зайцев Фёдор
Senya_L
Почти полным аналогом table valued function (TVF) в FB является селективная ХП (с блоком returns).

знаю - работал и IB и FB. просто хотел подчеркнуть, что у FB нет никаких преимуществ при джойне процедур с функциями )
а модифицировать данные внутри этой селективной ХП тоже нельзя?
29 июн 09, 17:12    [7355677]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Зайцев Фёдор
Senya_L
Почти полным аналогом table valued function (TVF) в FB является селективная ХП (с блоком returns).

знаю - работал и IB и FB. просто хотел подчеркнуть, что у FB нет никаких преимуществ при джойне процедур с функциями )
У TVF и селективных ХП есть как преимущества так и недостатки супротив друг друга. Чтобы неговорить загадками: предикаты и условия слияния могут "пропагироваться" (хз как попроще сказать) внутрь TVF через тот же APPLY, но это касается только простых функций с одним селектом. Для сложной функции один фиг будет создана временная таблица. В свою очередь селективные ХП пошустрее и ограничений там поменее. Последнее особенно актуально в MSSQL2008, где в функциях запреты стали еще жестче. Так что - каждая весчь хороша в своей ситуации... :)
SergSuper
Зайцев Фёдор
Senya_L
Почти полным аналогом table valued function (TVF) в FB является селективная ХП (с блоком returns).

знаю - работал и IB и FB. просто хотел подчеркнуть, что у FB нет никаких преимуществ при джойне процедур с функциями )
а модифицировать данные внутри этой селективной ХП тоже нельзя?
Можно.
29 июн 09, 17:17    [7355694]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Senya_L

предикаты и условия слияния могут "пропагироваться" (хз как попроще
сказать) внутрь TVF через тот же APPLY, но это касается только простых
функций с одним селектом.

И в чём тогда смысл таких TVF или хотя бы преимущество перед View?..

Posted via ActualForum NNTP Server 1.4

29 июн 09, 17:50    [7355800]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Dimitry Sibiryakov

Senya_L

предикаты и условия слияния могут "пропагироваться" (хз как попроще
сказать) внутрь TVF через тот же APPLY, но это касается только простых
функций с одним селектом.

И в чём тогда смысл таких TVF или хотя бы преимущество перед View?..


как задать условие where для поля, которое не возвращается ?
29 июн 09, 18:02    [7355831]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
просто хотел подчеркнуть, что у FB нет никаких преимуществ при джойне процедур с функциями )

Руки чешутся сравнить производительность, но лень...
29 июн 09, 18:14    [7355859]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Senya_L
При всем уважении... но не надо путать кислое с пресным. С ES можно сделать практически все, но от этого оно не станет похожим на конструкцию APPLY.

У меня два вопроса.
1.Если один и тот же результат можно получить за одно и то же время, то в чём разница?
2.APPLY есть в стандарте?
29 июн 09, 18:18    [7355870]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
Что select @i = i from table2 может сделать с i?
SUSPEND вынесен только чтобы не зависеть от клиента. Честно - устал я объяснять.

буквально то же самое - @i получит значение i из какой-то строки table2

Вообще пример был ориентирован не на конечный результат, а на сравнение производительности. Ну да ладно, если академические примеры трудны для восприятия, то скажу, что если вставить suspend в цикл, то ibexpert фетчит записи за 3 с небольшим секунды. Даже в этом случае MSSQL медленнее примерно в 10 раз
29 июн 09, 18:22    [7355881]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV

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

не понимаю, как можно сравнивать производительность полностью игнорируя конечный результат.
FreemanZAV
Ну да ладно, если академические примеры трудны для восприятия

для восприятия трудны взятые с потолка first 1 skip...
вам, видимо, нужно ещё потренироваться в написании "академических примеров"
FreemanZAV

то скажу, что если вставить suspend в цикл, то ibexpert фетчит записи за 3 с небольшим секунды. Даже в этом случае MSSQL медленнее примерно в 10 раз

это прекрасно, но как так вышло и что из этого следует?
м.б. именно такой код пришлось оптимизировать в первую очередь, и для этого были серьёзные причины?
что именно предполагается быстро-быстро делать таким образом ?
что-нибудь такое?
update T1 set
  T1.f1 = T2.f1
from table1 T1
  join table2 T2 on T1.id = T2.id
29 июн 09, 18:41    [7355934]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
FreemanZAV
1.Если один и тот же результат можно получить за одно и то же время, то в чём разница?
Дело в том, что результат получим один и тот же, но время будет, скорее всего, потому как
Senya_L
предикаты и условия слияния могут "пропагироваться" (хз как попроще сказать) внутрь TVF через тот же APPLY
То же самое относится не только к TFV, но и к подзапросам. В дополнение пример
select
  RT.*,
  SP.*
from RegularTable RT
  left join StoredProc(RT.f1, RT.f2) SP on RT.f1 = SP.f1
Выборка из StoredProc никак не будет зависеть ни от передаваемых как параметры RT.f1 и RT.f2, ни от условия слияния. Всегда ХП выдаст полный рекордсет, который только потом будет соединен с RegularTable. Тебе отлично известно, что в планах выборка из ХП всегда идет натуралом. В APPLY оптимизатором может быть использован индекс. Кстати, именно из-за этого свойства я и стал изучать этот оператор. Мог бы еще привести примеров, но лениво и, честно говоря, пока некогда. И так накатал уже :)
FreemanZAV
2.APPLY есть в стандарте?
Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?
29 июн 09, 19:21    [7356022]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Senya_L
Тебе отлично известно, что в планах выборка из ХП всегда идет натуралом.

Чтож сегодня такое? Никто толком ничего не читает. Я вроде говорил в данном случае о EB.
Зайцев Фёдор
это прекрасно, но как так вышло и что из этого следует?

Вывод очевиден, курсоры в mssql в 10 медленнее чем в fb, а боле ничего.
29 июн 09, 19:45    [7356079]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 12   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить