powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ...и снова MSSQL 2008 R2 vs PostgreSQL
25 сообщений из 92, страница 2 из 4
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026537
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVпропущено...


Вот здесь говорится зачем.

О чем я и говорил :-)
В PostgreSQL это давно есть и используется, только чуть-чуть по другому. :-)

Насколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026584
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНасколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".

Для этого есть
1) Типы
2) Recordset
3) Наследование

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026594
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.


И над всем этим можно выполнять операции DML?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026621
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVНасколько я знаю, в PG есть временные таблицы, которые можно создавать на "лету", конкретно такой реализации табличных типов нет. Я могу ошибаться, но хотелось бы как здесь говорят "тынц".

Для этого есть
1) Типы
2) Recordset
3) Наследование

Грубо говоря я могу создать тип и возвращать его множество.
Либо я могу создать хранимую функцию и возвращать Recordset, столбцы задаются выходными параметрами функции.

P.S. Спорить смысла не вижу, т.к. Вам "плюшки" MS SQL более значимы, чем для меня. :-)спорить не надо, но хотелось бы какой-то пример как оно выглядит на разных СУБД
это действительно было бы полезным
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026631
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVИ над всем этим можно выполнять операции DML?

Если только обернуть во View.
Над View можно делать DML, только правила нужно прописать.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026647
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Да еще наследование.
Т.е. можно создать потомка другой таблицы.
Причем с потомка могут быть видны данные как родителя, так и потомка.

Т.е. "плюшки" у PostgreSQL, они то что можно в MS SQL в PostgreSQL тоже можно, но чуть-чуть подругому :-)

Если хотите узнать о "плюшках" PostgreSQL то dfv сюда
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026876
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulFreemanZAVИ над всем этим можно выполнять операции DML?

Если только обернуть во View.
Над View можно делать DML, только правила нужно прописать.

Честно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026907
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026912
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя

Ну, это в стиле майкрософт. Всегда что-нибудь не доделают.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026917
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVсинтаксис схож с create table, можно и индексы определить
индексы определить нельзя

интересно, unique constraint без индексов работают?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026922
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЗайцев Фёдорпропущено...

индексы определить нельзя

интересно, unique constraint без индексов работают?

А нет, вроде бы с индексами. Т.е. индекс определить можно, но через ж...
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026927
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЗайцев Фёдорпропущено...

индексы определить нельзя

интересно, unique constraint без индексов работают?
ограничения реальзованы через индексы, можно даже указать index option, но определить индексы всё равно нельзя
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026939
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев ФёдорFreemanZAVпропущено...


интересно, unique constraint без индексов работают?
ограничения реальзованы через индексы, можно даже указать index option, но определить индексы всё равно нельзя

Ну суть не меняется. Определить нельзя, но создать можно. Если нужен индексный поиск, то его несложно реализовать . Или mssql не будет этот индекс использовать?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026964
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНу суть не меняется.вообще-то меняется. индексы получится создать только уникальные, без включаемых полей и т.п.
FreemanZAVИли mssql не будет этот индекс использовать?
могут быть использованы индексы, созданные для ограничаний. всё как с табличными переменными, т.е. план может быть несколько неожиданным
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026973
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зайцев Фёдорвообще-то меняется. индексы получится создать только уникальные


Это легко обходится. Ничто не мешает создать составное ограничение, где второе поле будет уникальным - например identity.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38026980
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVЧестно - не понял. Табличные типы используются в процедурах. Т.е. получается, что в PG в plsql коде надо нечто обернуть во view, прописать правила, а потом уже использовать? Мне кажется это не оч. удобным. Большой плюс табличных типов в MSSQL как раз в том, что достаточно только объявить переменную (синтаксис схож с create table, можно и индексы определить), а потом пользоваться ей как обычной таблицей. И никаких дополнительных познаний в tsql не нужно.

В pgsql есть rowtype, который позволяет определить переменную по таблице.
Честно говоря, по Вашему описанию выглядит как "костыль".
Т.е. мне никогда не требовалось в прецедуре объявлять переменную, которая вела себя как таблица.
Есть таблица, есть DML.
Если нужны какие-то более сложные манипуляции, всегда можно объявить переменную типа rowtype и использовать ее, ну или ч/з хранимые функции.

А про view...
Можно для любого view задать действия на insert и update.
Соответственно view, для внешнего пользователя, ничем не будет отличаться от таблицы.
Очень удобно. :-)

Опять же "на прямую" PostgreSQL и MS SQL сравнивать не имеет смысла, т.к. PostgreSQL может сделать все что и MS SQL, но чуть-чуть по другому :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027024
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul В pgsql есть rowtype, который позволяет определить переменную по таблице.
Честно говоря, по Вашему описанию выглядит как "костыль".
Не нравится моё описание - я привёл другое.

mad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая вела себя как таблица.
Значит, наверное, надо сообщить майкрософту, чтоб убрала этот функционал нафиг.

mad_nazgulЕсли нужны какие-то более сложные манипуляции, всегда можно объявить переменную типа rowtype и использовать ее, ну или ч/з хранимые функции.

ROWTYPE - это по сути запись, как этот тип можно сравнивать с табличными переменными? Табличные переменные - это не одна запись, а по сути своей таблица.

mad_nazgulА про view...
Можно для любого view задать действия на insert и update.
Соответственно view, для внешнего пользователя, ничем не будет отличаться от таблицы.
Очень удобно. :-)
Всё таки опять не понял. Причём здесь view, если речь речь идёт о табличных переменных? Как можно сравнивать представления и процедурное расширение? Это вещи из разных опер.

mad_nazgulОпять же "на прямую" PostgreSQL и MS SQL сравнивать не имеет смысла, т.к. PostgreSQL может сделать все что и MS SQL, но чуть-чуть по другому :-)

Что чуть-чуть, я бы не сказал.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027058
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027061
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Собственно в ссылке, которую я привёл, об этом сказано.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027065
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVНе нравится моё описание - я привёл другое.


По нему у меня вопрос возник "Зачем?!"

FreemanZAVЗначит, наверное, надо сообщить майкрософту, чтоб убрала этот функционал нафиг.


Если я говорю "Зачем?", это не значит, что оно не нужно совсем, это значит, что оно не нужно мне.
Вам например очень нужно, мне не очень.

FreemanZAVROWTYPE - это по сути запись, как этот тип можно сравнивать с табличными переменными? Табличные переменные - это не одна запись, а по сути своей таблица.


Зачем?! Если есть таблицы?
Т.е. зачем переменные которые ведут себя как таблицы, когда есть таблицы, которые ведут себя как таблицы. :-)

FreemanZAVВсё таки опять не понял. Причём здесь view, если речь речь идёт о табличных переменных? Как можно сравнивать представления и процедурное расширение? Это вещи из разных опер.


О чем и речь!
Зачем нужны табличные переменные?
Если нужна таблица, я использую таблицу.
Зачем создавать "Самурая без меча, который подобен самураю с мечем, только без меча"?!

FreemanZAVЧто чуть-чуть, я бы не сказал.


Вы бы не сказали, а я вот сказал. ;-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027076
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul Если я говорю "Зачем?", это не значит, что оно не нужно совсем, это значит, что оно не нужно мне.
Вам например очень нужно, мне не очень.


"Зачем", популярно описано в ссылке, которую я привёл. Ну а Дмитрий одну из причин сформулировал по русски. Если этого мало, то вот ещё
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027090
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmad_nazgulТ.е. мне никогда не требовалось в прецедуре объявлять переменную, которая
вела себя как таблица.
Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Понятно...
Для PostgreSQL это не нужно. :-)
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027093
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulЗачем?! Если есть таблицы?
Т.е. зачем переменные которые ведут себя как таблицы, когда есть таблицы, которые ведут себя как таблицы. :-)вы что-то путаете - нужны таблицы, которые ведут себя как переменные.
у вас такие есть?
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027095
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
FreemanZAVЧто чуть-чуть, я бы не сказал.


Вы бы не сказали, а я вот сказал. ;-)

Я могу привести в пример оператор merge. В postgre можно извернуться, но ничего похожего на merge не получится.
...
Рейтинг: 0 / 0
...и снова MSSQL 2008 R2 vs PostgreSQL
    #38027105
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulDimitry Sibiryakovпропущено...

Это потому, что ты не натыкался на тормоза с таблицами. Переменные не нуждаются в локах
(которые у MS на каждом первом шагу).


Понятно...
Для PostgreSQL это не нужно. :-)

А как, например, многократно использовать какую-нибудь тяжёлую выборку, если в PG подзапросы не материализуются?
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 2 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / ...и снова MSSQL 2008 R2 vs PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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