powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL Express vs PostgreSQL/SQLite/FireBird
25 сообщений из 282, страница 4 из 12
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36064965
leonbn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVВывод очевиден, курсоры в mssql в 10 медленнее чем в fb, а боле ничего.
Отличный вывод! Сахар слаще горчицы, что теперь на мясо сахар сыпать
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36064986
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leonbn
Отличный вывод!
А что, по моему неплохой?
leonbn что теперь на мясо сахар сыпать
А это как то поможет производительности курсоров mssql? Если да, почему бы нет?
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36064994
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдору FB нет никаких преимуществ при джойне процедур с функциями )
А всё-таки можно внутри ф-ии данные модифицировать или нет? В fb это можно сделать запросто, а MSSQL материться, по крайней мере у меня.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36064995
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорчто именно предполагается быстро-быстро делать таким образом ?
Вспоминаются слова ДжекНепотрошитель99% программистов начхать на встроенную поддержку XML в СКЛсервере, но ведь 1% будет-то счастлив ее иметь ;-)
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36064997
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVА всё-таки можно внутри ф-ии данные модифицировать или нет? В fb это можно сделать запросто, а MSSQL материться, по крайней мере у меня.

Данные в таблицах бд - нет. Тока в локальных табличных переменных в функции. Side effect, понимаете. Вот делаете Вы SELECT с APLLY к табличной функции, а она, вау, данные в таблицах модифицирует.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065000
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinДанные в таблицах бд - нет
Ну, нет так нет
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065036
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, возможности TSQL я бы не стал рассматривать как преимущество перед fb. А основное преимущество - это производительность. Fb тут MSSQL не соперник.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065141
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVА основное преимущество - это производительность. Fb тут MSSQL не соперник.
пока мы наблюдали, как FB очень быстро делает ничего.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065159
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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 на этом примере ?
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065179
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к примеру выше

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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;

против

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 так и не удалось; возможно я просто не умею его готовить, но там очень простое администрирование, говорят, так что готов принять к сведению, что я делаю не так.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065256
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдор
FreemanZAV, не составит выполнить это и повторить в FB.
Скажите пожалуйста, во сколько раз быстрее FB на этом примере ?
От разошёлся. Вообще-то я говорил, что MSSQL производительней fb и fb не соперник MSSQL. Просто забыл добавить "в работе со множествами", как говорил RENaissance. И, кстати, привёл пример, где mssql быстрее раза в три
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065266
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдордобиться преимущества FB на inner join так и не удалось;
Есть конечно один нюанс. У винды файловый кэш не очень, поэтому всегда приходится менять один параметр в конфиге. В linux такой проблемы нет. Вот тесты под виндой. Я переделал всё на table2, которую я уже приводил в примерах и сделал count(*) для того, чтобы исключить влияние клиентских компонентов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create function f_asd()
returns @t table (id int not null)
as
begin
  insert into @t (id) select i from table2;
  return;
end
go

Код: plaintext
1.
2.
3.
4.
5.
6.
create or alter procedure p_qwe
returns (id integer)
as
begin
  for select i  from table2 into :id do
    suspend;
end

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

Код: plaintext
1.
2.
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 я не скажу, из вредности.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065271
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, ошибся. Не ту ф-ю тестировал

Код: plaintext
1.
2.
3.
4.
create function f_qwe()
returns table
as
return (select i  from table2)
go

mssql - 953 ms
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065309
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVПардон, ошибся. Не ту ф-ю тестировал

Код: plaintext
1.
2.
3.
4.
create function f_qwe()
returns table
as
return (select i  from table2)
go

mssql - 953 ms
Однако тут не всё слава богу. Такой ситаксис не допускает использование никаких переменных. Т.е. такой номер не пройдёт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create function f_qqq()
returns   table  
as
begin
 declare @q int
 
 return select @q
end
и приходится использовать вариант ф-ии f_asd. А в этом случае, как показывают тесты, fb имеет преимущество
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065324
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно путаю, в случае с ф-ей f_qwe, MSSQL могёт построить план как угодно, т.е он интерпретирует её как представление, или типа того. В случае с f_asd ему деваться некуда и приходится юзать временные таблицы. Ещё хуже в этом случае ситуация с outer apply . Например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create function f_qqq(@i int)
returns @t table (id int not null) 
as
begin
 insert into @t (id) select @i
 return 
end


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

В fb подобная конструкция выполняется за 3 секунды
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065372
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L
Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?
Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065553
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVВ fb подобная конструкция выполняется за 3 секунды

Код: plaintext
1.
2.
3.
4.
create function f_qqq(@n int)
returns table
as
  return (select id = @n)
go
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065566
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVSenya_L
Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?
Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.Понравилось высказывание отсюда
авторCROSS and OUTER APPLY are not part of the ANSI SQL standard; they are intended for compatibility with Microsoft SQL Server ."Дедушка" подстраивается под "внучка" .
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065614
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVВ fb подобная конструкция выполняется за 3 секунды

Код: plaintext
1.
2.
3.
4.
create function f_qqq(@n int)
returns table
as
  return (select id = @n)
go

И что? Суть от этого не меняется. Если нужна сложная обработка в функциях, которая не решается одним запросом, то MSSQL здесь уступает fb
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065619
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LFreemanZAVSenya_L
Думаю, ответ ты знаешь ;), но что хочешь этим сказать? Как будто соответствие стандартам останавливало разработчиков СУБД от использования нестандартных операторов?
Я не зря спросил про стандарт. Если это стандартная конструкция, то я напишу хотелку в трекер. Иначе разработчики вряд ли будут на эту хотелку смотреть.Понравилось высказывание отсюда
авторCROSS and OUTER APPLY are not part of the ANSI SQL standard; they are intended for compatibility with Microsoft SQL Server ."Дедушка" подстраивается под "внучка" .
Ты это к чему?
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065655
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAV
И что? Суть от этого не меняется. Если нужна сложная обработка в функциях, которая не решается одним запросом, то MSSQL здесь уступает fb
пока это только слова.
предыдущие примеры не этого подтверждают. ФБ либо быстро делает ничего (здесь), либо медленно делает хоть что-то.
но у меня есть достойный ответ - MSSQL вообще всё делает значительно быстрее, но я из вредности не покажу как )
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065673
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорФБ либо быстро делает ничего
Ибо те, кто работает с mssql настолько боятся курсоров, что стараются из не замечать (они для них ничто).

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


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

Ну вот и славно
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065684
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорпредыдущие примеры не этого подтверждаю
Человек очень странный. Сам же привёл три теста, на двух из которых fb проиграл, а на одном выиграл.А потом говорит, что это всё фигня. Я правда дополнил это ещ одним тестом, где проиграл mssql, возможно тест ерундовый, но чем лучше его три в таком случае?
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065719
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVа на одном выиграл это на каком из моих?
FreemanZAV Я правда дополнил это ещ одним тестом, где проиграл mssql, возможно тест ерундовый, но чем лучше его три в таком случае?
дело в том, что вот это утверждение ложно, и сделаные на его основе тесты - тоже :
FreemanZAVВ случае с f_asd ему деваться некуда и приходится юзать временные таблицы.
в остальном согласен - тест ерундовый
...
Рейтинг: 0 / 0
MS SQL Express vs PostgreSQL/SQLite/FireBird
    #36065732
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорна его основе тестыне тесты, а выводы )
...
Рейтинг: 0 / 0
25 сообщений из 282, страница 4 из 12
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / MS SQL Express vs PostgreSQL/SQLite/FireBird
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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