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

Откуда: СПб
Сообщений: 522
FreemanZAV
Вывод очевиден, курсоры в mssql в 10 медленнее чем в fb, а боле ничего.

Отличный вывод! Сахар слаще горчицы, что теперь на мясо сахар сыпать
29 июн 09, 19:57    [7356106]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

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

Отличный вывод!

А что, по моему неплохой?
leonbn
что теперь на мясо сахар сыпать

А это как то поможет производительности курсоров mssql? Если да, почему бы нет?
29 июн 09, 20:20    [7356145]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

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

А всё-таки можно внутри ф-ии данные модифицировать или нет? В fb это можно сделать запросто, а MSSQL материться, по крайней мере у меня.
29 июн 09, 20:29    [7356160]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
что именно предполагается быстро-быстро делать таким образом ?

Вспоминаются слова
ДжекНепотрошитель
99% программистов начхать на встроенную поддержку XML в СКЛсервере, но ведь 1% будет-то счастлив ее иметь ;-)
29 июн 09, 20:32    [7356163]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
FreemanZAV
А всё-таки можно внутри ф-ии данные модифицировать или нет? В fb это можно сделать запросто, а MSSQL материться, по крайней мере у меня.


Данные в таблицах бд - нет. Тока в локальных табличных переменных в функции. Side effect, понимаете. Вот делаете Вы SELECT с APLLY к табличной функции, а она, вау, данные в таблицах модифицирует.
29 июн 09, 20:34    [7356166]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
pkarklin
Данные в таблицах бд - нет

Ну, нет так нет
29 июн 09, 20:38    [7356170]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
В общем, возможности TSQL я бы не стал рассматривать как преимущество перед fb. А основное преимущество - это производительность. Fb тут MSSQL не соперник.
29 июн 09, 21:32    [7356266]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
А основное преимущество - это производительность. Fb тут MSSQL не соперник.

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

Откуда: Лужки
Сообщений: 5308
set nocount on;
/*
drop table table1;
create table table1
(
  id int not null primary key,
  name varchar(300) not null
);
with X (n) as
(
  select 1
  union all
  select n+1 from x where n <= 99999
)
insert into table1(ID, NAME)
select n, cast(n as varchar(300))
from X
option (maxrecursion 0);
create index IX_S1 on table1 (name, id);
--*/

select top 1 Q.*
from table1 Q
  join table1 W on Q.ID = W.ID
order by Q.name, Q.id;

FreemanZAV, не составит выполнить это и повторить в FB.
Скажите пожалуйста, во сколько раз быстрее FB на этом примере ?
30 июн 09, 00:23    [7356722]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
к примеру выше

create function f_qwe()
returns table
as
return (select id from table1)
go

create function f_asd()
returns @t table (id int not null)
as
begin
  insert into @t (id) select id from table1;
  return;
end
go

select T.id
from table1 T
  left join f_qwe() P on T.id = P.id;

select T.id
from table1 T
  left join f_asd() P on T.id = P.id;

против

create or alter procedure p_qwe
returns (id integer)
as
begin
  for select id from table1 into :id do
    suspend;
end

select T.*
from table1 T
  left join p_qwe P on T.id = P.id

с left join я так и не дождался результатов от FB. добиться преимущества FB на inner join так и не удалось; возможно я просто не умею его готовить, но там очень простое администрирование, говорят, так что готов принять к сведению, что я делаю не так.
30 июн 09, 01:01    [7356833]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

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

FreemanZAV, не составит выполнить это и повторить в FB.
Скажите пожалуйста, во сколько раз быстрее FB на этом примере ?

От разошёлся. Вообще-то я говорил, что MSSQL производительней fb и fb не соперник MSSQL. Просто забыл добавить "в работе со множествами", как говорил RENaissance. И, кстати, привёл пример, где mssql быстрее раза в три
30 июн 09, 08:04    [7357063]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
добиться преимущества FB на inner join так и не удалось;

Есть конечно один нюанс. У винды файловый кэш не очень, поэтому всегда приходится менять один параметр в конфиге. В linux такой проблемы нет. Вот тесты под виндой. Я переделал всё на table2, которую я уже приводил в примерах и сделал count(*) для того, чтобы исключить влияние клиентских компонентов.
create function f_asd()
returns @t table (id int not null)
as
begin
  insert into @t (id) select i from table2;
  return;
end
go

create or alter procedure p_qwe
returns (id integer)
as
begin
  for select i  from table2 into :id do
    suspend;
end

Сам тест:
select COUNT(*) 
from table2 T
  inner join f_asd() P on T.i = P.id;

select count(*)
from table2 T
  inner join p_qwe P on T.i  = P.id

mssql - 8,281 sec
fb - 3,672 sec

А как делать эффективный left join с ХП в fb я не скажу, из вредности.
30 июн 09, 08:22    [7357079]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Пардон, ошибся. Не ту ф-ю тестировал

create function f_qwe()
returns table
as
return (select i  from table2)
go

mssql - 953 ms
30 июн 09, 08:30    [7357088]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
FreemanZAV
Пардон, ошибся. Не ту ф-ю тестировал

create function f_qwe()
returns table
as
return (select i  from table2)
go

mssql - 953 ms

Однако тут не всё слава богу. Такой ситаксис не допускает использование никаких переменных. Т.е. такой номер не пройдёт
create function f_qqq()
returns   table  
as
begin
 declare @q int
 
 return select @q
end
и приходится использовать вариант ф-ии f_asd. А в этом случае, как показывают тесты, fb имеет преимущество
30 июн 09, 09:12    [7357179]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Если я правильно путаю, в случае с ф-ей f_qwe, MSSQL могёт построить план как угодно, т.е он интерпретирует её как представление, или типа того. В случае с f_asd ему деваться некуда и приходится юзать временные таблицы. Ещё хуже в этом случае ситуация с outer apply . Например
create function f_qqq(@i int)
returns @t table (id int not null) 
as
begin
 insert into @t (id) select @i
 return 
end


Запрос
 select COUNT(*) 
 from table2 T
outer apply f_qqq(T.i) p
И сервер надолго задумывается.

В fb подобная конструкция выполняется за 3 секунды
30 июн 09, 09:21    [7357205]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

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

Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?

Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.
30 июн 09, 09:45    [7357298]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
В fb подобная конструкция выполняется за 3 секунды


create function f_qqq(@n int)
returns table
as
  return (select id = @n)
go
30 июн 09, 11:08    [7357721]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
FreemanZAV
Senya_L

Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?

Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.
Понравилось высказывание отсюда
автор
CROSS and OUTER APPLY are not part of the ANSI SQL standard; they are intended for compatibility with Microsoft SQL Server.
"Дедушка" подстраивается под "внучка" .
30 июн 09, 11:12    [7357746]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
FreemanZAV
В fb подобная конструкция выполняется за 3 секунды


create function f_qqq(@n int)
returns table
as
  return (select id = @n)
go

И что? Суть от этого не меняется. Если нужна сложная обработка в функциях, которая не решается одним запросом, то MSSQL здесь уступает fb
30 июн 09, 11:27    [7357862]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Senya_L
FreemanZAV
Senya_L

Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?

Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.
Понравилось высказывание отсюда
автор
CROSS and OUTER APPLY are not part of the ANSI SQL standard; they are intended for compatibility with Microsoft SQL Server.
"Дедушка" подстраивается под "внучка" .

Ты это к чему?
30 июн 09, 11:28    [7357869]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

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

И что? Суть от этого не меняется. Если нужна сложная обработка в функциях, которая не решается одним запросом, то MSSQL здесь уступает fb

пока это только слова.
предыдущие примеры не этого подтверждают. ФБ либо быстро делает ничего (здесь), либо медленно делает хоть что-то.
но у меня есть достойный ответ - MSSQL вообще всё делает значительно быстрее, но я из вредности не покажу как )
30 июн 09, 11:40    [7357959]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
ФБ либо быстро делает ничего

Ибо те, кто работает с mssql настолько боятся курсоров, что стараются из не замечать (они для них ничто).

Тем полезнее им кажется запрос
select T.id
from table1 T
  left join f_asd() P on T.id = P.id;
который делает тоже что и
select T.id
from table1 T


Зайцев Фёдор
MSSQL вообще всё делает значительно быстрее


Ну вот и славно
30 июн 09, 11:46    [7358022]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
FreemanZAV
Member

Откуда:
Сообщений: 2434
Зайцев Фёдор
предыдущие примеры не этого подтверждаю

Человек очень странный. Сам же привёл три теста, на двух из которых fb проиграл, а на одном выиграл.А потом говорит, что это всё фигня. Я правда дополнил это ещ одним тестом, где проиграл mssql, возможно тест ерундовый, но чем лучше его три в таком случае?
30 июн 09, 11:52    [7358062]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
FreemanZAV
а на одном выиграл
это на каком из моих?
FreemanZAV
Я правда дополнил это ещ одним тестом, где проиграл mssql, возможно тест ерундовый, но чем лучше его три в таком случае?

дело в том, что вот это утверждение ложно, и сделаные на его основе тесты - тоже :
FreemanZAV
В случае с f_asd ему деваться некуда и приходится юзать временные таблицы.

в остальном согласен - тест ерундовый
30 июн 09, 12:07    [7358198]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Express vs PostgreSQL/SQLite/FireBird  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Зайцев Фёдор
на его основе тесты
не тесты, а выводы )
30 июн 09, 12:11    [7358231]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 12   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить