powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / PL/SQL vs.Transact SQL
25 сообщений из 395, страница 8 из 16
PL/SQL vs.Transact SQL
    #35975908
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так полагаю, что глобальные сравнения типа Pl/SQL vs. T-SQL или oracle vs. mssql имеют мало смысла, так как эти системы достаточно различны, мало людей могут похвастатся реально глубокими познаниями сразу в них обоих (хотя конечно количество тех кто считает себя профи значительно больше :)) ).
Что-бы получить хоть какую-то реальную глобальную картину происходящего, нужно меряться не бессмысленными сравнениями типа "а нафига там временная таблица", а такими-же глобальными фактами как например тесты tpc. Я-бы к ним еще добавил время, затраченное на написание, настройку и поддержку системы (в человеко-часах)
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976501
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976563
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solmyrto pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?

И временные таблицы и табличные переменные "храняться" в tempdb.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976663
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solmyrto pkarklin.

Интересно, а как эти временные таблицы хранятся в MSSQL? Из уже написанного - в tempdb - можно сделать вывод, что на диске? Т.е. аналогично оракловым gtt?

так в Оракле они просто хранятся, а MS SQL они на лету создаются и убиваются - это же намного круче!
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976683
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дддддд,
если на операцию создания и удаления времянок тратится лишнее время, то оракловый подход круче
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976814
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОКТОГЕНдддддд,
если на операцию создания и удаления времянок тратится лишнее время, то оракловый подход кручене путайте реализацию и концепцию
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976827
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОКТОГЕНдддддд,
на операцию создания и удаления времянок тратится лишнее время

А когда мелкософт волновала проблема быстродействия?
У Билла на этот случай один ответ - "вы используете устаревшее оборудование"
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976889
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin И временные таблицы и табличные переменные "храняться" в tempdb.

Вроде = что делают - хранятся, что делать - храниться. Или это у меня такой неверный оракловый подход? :)

Из данного факта, учитывая так широко освещенную вами их необходимость, удобность, производительность и прямо таки одиозность, возникает целый комплекс вопросов:

1) если брать врем. таблицы MSSQL (втмс) как аналог оракловых коллекций и массивов, т.е. для хранения промежуточных результатов запроса для послед. обработки (проведение каких то расчетов и проч.), то в оракуле данные объекты хранятся таки в памяти, а втмс на диске.

2) если брать втмс как аналог оракловых врем. таблиц (вто), собственно также для хранения промежут. результатов, то вто типизированы, при вызове процедуры не создаются каждый раз, их использование не логируется. У втмс, как я понял, все наоборот.

3) если брать втмс как средство разбиения сложных запросов на простые, то в оракуле оно и не нужно. Вы не задавались вопросом, почему в оракуле предпочтение отдается сложному запросу перед процедурным подходом? Именно потому, что запрос выбирает данные из обычных (реальных) таблиц, в которых уже все оптимизировано для быстрого поиска (индексы и др.), плюс ссылочная целостность, статистика, различная бизнес-логика. Чего очевидно не наблюдается в втмс. Навешивание на втмс чего-то подобного, я думаю, бесперспективное занятие.
А если все же надо материализовать результаты, то хинт в руки (выше писали уже).

4) по поводу исп-я втмс для подсказки оптимизатору (в т.ч. при запросах через линки) - это сильно задвинуто. В оракуле есть хинты, например, driving_site, подсказывающие оптимизатору на какой стороне следует выполнять запрос. Без всяких фокусов с врем. таблицами.

Короче говоря, необходимость, удобность и производительность втмс это из области какой то непонятной фантастики.

Единственное видимое мне добро от втмс, и то с т.зр. программера, это их большая похожесть на таблицы, нежели аналоги оракле, и отсюда сопутствующие функции по работе с ними как с таблицами.
А если с т.зр. сервера БД, так и этого плюса нет.

Такое вот получилось ИМХО.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35976926
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.
А где оно и как хранится, как реализуется не является уже свойством языка а является свойством конкретного движка сервера. В Sybase SA времянки могут быть не логгируемыми, хранятся по-другому, но к языку это не имеет никакого отношения.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977076
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему-то на собеседованиях очень часто любят задавать задачи типа:

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

Интересно, как эта задача решается на MS SQL?
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977121
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что сложного в этой задаче? Надо только определиться с критерием задвоенности и опираться на поле "дата ввода".
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977131
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldА что сложного в этой задаче? Надо только определиться с критерием задвоенности и опираться на поле "дата ввода".

Нет даты ввода. есть 2 поля ID, NAME
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977132
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее, есть только одно поле NAME.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977149
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ддддддпрочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Нет даты ввода. есть 2 поля ID, NAME
А вот мне, например, было бы любопытно, как решить эту задачу на Oracle. Желательно без рассказа об ORA_ROWSCN :)
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977161
пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ддддддПочему-то на собеседованиях очень часто любят задавать задачи типа:

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

Интересно, как эта задача решается на MS SQL?Навскидку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @tbl TABLE (id INT IDENTITY( 1 , 1 ), f1 INT, f2 INT, stamp TIMESTAMP)

INSERT INTO @tbl (f1,f2) 
SELECT  1 ,  1  UNION ALL
SELECT  1 ,  1  UNION ALL
SELECT  2 ,  2  UNION ALL
SELECT  2 ,  2  UNION ALL
SELECT  3 ,  3  UNION ALL
SELECT  3 ,  3 

SELECT * FROM @tbl


DELETE FROM @tbl
WHERE id NOT IN (SELECT TOP  1  WITH TIES id FROM @tbl t ORDER BY ROW_NUMBER() OVER (PARTITION BY f1, f2 ORDER BY stamp)
)

SELECT * FROM @tbl


ЗЫ. Позвольте поинтересоваться: если вы не знаете ничего кроме оракла, то какого фига вы шаритесь в форуме по сравнению субд?
Ggg_oldНе перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.
А где оно и как хранится, как реализуется не является уже свойством языка а является свойством конкретного движка сервера. В Sybase SA времянки могут быть не логгируемыми, хранятся по-другому, но к языку это не имеет никакого отношения.А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.

почитал тут у вас - прикольно. на каждую бензоколонку - по ораклю и оказывается работа с ораклем повышает чуство ответственности... с каких пор инструмент стал лечилкой от кривых рук?
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977190
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerддддддпрочем удалить надо не все задвоенные записи, и запись, которая была введена последней.

Нет даты ввода. есть 2 поля ID, NAME
А вот мне, например, было бы любопытно, как решить эту задачу на Oracle. Желательно без рассказа об ORA_ROWSCN :)

Код: 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.
25.
26.
27.
28.
29.
30.
31.
--
-- Удалить дублирующие строки
--
drop table expl cascade constraints
/
create table expl (expl_id number( 10 ), 
                   expl_name varchar2( 10 ), 
                   expl_adress varchar2( 10 ))
/

insert into expl values ( 1 ,'имя','адрес');
insert into expl values ( 1 ,'имя','адрес');
insert into expl values ( 2 ,'имя2','адрес2');
insert into expl values ( 2 ,'имя2','адрес2');
insert into expl values ( 3 ,'имя3','адрес3');
insert into expl values ( 4 ,'имя4','адрес4');
commit;

--
-- From TKyte
--
delete from expl
where rowid in (select rid
                from (select rowid rid,
                      row_number() over (partition by a.expl_id, 
                                                      a.expl_name, 
                                                      a.expl_adress
                                                      order by rowid) rn
                      from expl a)
                where rn <>  1 )
                
select * from expl  
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977202
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пгуые123
ЗЫ. Позвольте поинтересоваться: если вы не знаете ничего кроме оракла, то какого фига вы шаритесь в форуме по сравнению субд?


Чтобы понять, стоит ли переходить с Оракла на более передовую СУБД.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977244
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldНе перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного. Временные таблицы - это удобный инструмент для структуирования, отладки и в некотоых случая увеличения производительности запросов. В отличии от вских масиивов и еще чего-то непонятного в оракле, они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними.

Я вообще то не адепт. И оракул юзаю постольку поскольку. За других слава богу не отвечаю. Вместо слова "оракле" подставьте любое, если вам так легче. Просто рассуждаю о конкретных подходах и реализациях в MSSQL и Oracle. С Sybase SA не работал и даже не видел. Раз там реализовано так, как вы написали, думаю не зря это было сделано?

А вот тов. pkarklin с описанными вами упорством и верой доказывает крутость втмс, и при каждом случае не забывает кивнуть на их отсутствие в оракле.
А по факту получаем, что втмс - это почти обычная (реальная) таблица БД, со всеми вытекающими накладными расходами в виде создания, дискового ввода\вывода, логирования и проч. Создавать обычную таблицу на каждый чих - совершенно безупречное решение от MS. Ура, товарищи. :)

Вот с "они не выбиваются из реляционной концепции SQL, не вводят каких-то новых способов работы с ними" согласен. Но кому скажите нужно такое средство, созданное для "структуирования, отладки", а применяемое в пром. коде? И откуда бы здесь интересно взяться указанному "в некотоых случая увеличения производительности запросов"?

Ggg_oldА где оно и как хранится, как реализуется не является уже свойством языка а является свойством конкретного движка сервера. В Sybase SA времянки могут быть не логгируемыми, хранятся по-другому, но к языку это не имеет никакого отношения.

Функциональность и реализация конкретных функций в движке БД накладывает таки ограничения на возможности языка БД. Вы не находите?
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977309
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пгуые123А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.

Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977310
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дддддд--
-- Удалить дублирующие строки
--
Мне таки по-прежнему любопытно, как решить эту задачу на Oracle. Если Вы готовы дать зуб, что приведённый код таки удаляет "запись, которая была введена последней" - приносите

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Connected to Oracle Database 10g Enterprise Edition Release  10 . 1 . 0 . 2 . 0  
Connected as test

 Создадим и заполним таблицу

SQL> create table dupes (i integer) rowdependencies;

Table created

SQL> insert into dupes select mod (rownum,  10 ) from dual connect by level <=  10000 ;

 10000  rows inserted

SQL> commit;

Commit complete

SQL> delete from dupes where rownum <=  5000 ;

 5000  rows deleted

SQL> commit;

Commit complete

SQL> insert into dupes select mod (rownum,  10 ) from dual connect by level <=  5000 ;

 5000  rows inserted

SQL> commit;

Commit complete

 Посмотрим минимальный и максимальный номера транзакций для записи с i =  0 

SQL> select min (ora_rowscn), max (ora_rowscn) from dupes where i =  0 ;

MIN(ORA_ROWSCN) MAX(ORA_ROWSCN)
--------------- ---------------
        17519961          17520012 

 Выполним приведённый Вами запрос

SQL> delete from dupes
   2   where rowid in (select rid
   3                   from (select rowid rid,
   4                         row_number() over (partition by i
   5                                                         order by rowid) rn
   6                         from dupes a)
   7                   where rn <>  1 )
   8   ;

 9990  rows deleted

SQL> commit;

Commit complete

 И посмотрим, какая запись сохранилась

SQL> select min (ora_rowscn), max (ora_rowscn) from dupes where i =  0 ;

MIN(ORA_ROWSCN) MAX(ORA_ROWSCN)
--------------- ---------------
        17520012          17520012 
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977321
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solmyrпгуые123А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.

Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.

Хотя должен признать, что mssql-щики по теме в общей массе спорят более аргументированно, и тов. pkarklin в первую голову.
А со стороны оракула действительно частенько вылазили троли. Счас их поубавилось вроде.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977331
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без поля "дата ввода", задача не корректна, особенно для собеседования. Ссылки на внутренние поля типа row_id и еще чего-то в таком духе не канают ибо специфицично для сервера, и самое главное, не соответсвуют самому духу декларативной обработки данных в реляционной системе. Да и как поменяется этот row_number после разного рода бэкапов/ресторов, процедуры перезаливки таблицы и еще еще каких-нибудь административных действий неизвестно.
Итого: без поля дата ввода надо оставить одну любую из двух записей.
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977334
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old
Не перестает удивлять упертость адептов оракла в абсолютную святость и крутоту их субд и ативное отрицание всего иного.
Solmyr
Хотя должен признать, что mssql-щики по теме в общей массе спорят более аргументированно, и тов. pkarklin в первую голову.
А со стороны оракула действительно частенько вылазили троли. Счас их поубавилось вроде.
господа, давайте обсуждать возможности серверов, а не методы спора их сторонников
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977356
пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Solmyrпгуые123А это у ораклистов любимое дело, всегда с них охреневал, как яростно доказывают, с пеной у рта, что "оркаль круто". DB2-шники спокойно себе делают свое дело и никому ниче не доказывают. mssql-щики тоже. а сообщество ораклистов наполнилось пацанами у которых деццтво играет неподеццки и им пофиг что доказывать, лишь бы пальцы гнуть на каждом углу.

Тов. softwarer сказал, что большинство тем по сравнению MSSQL и Oracle создано mssql-щиками. Так что неправда ваша.Не знаю кто че создавал но по последним темам ощущение, что у некоторых ораклистов ум за разум заходит. Советовать всем и вся Oracle дурь есть великая и полный пусец, хоть бы он трижды и был хорош. а XE - это вобще редкостная замануха, эдакий бесплатный сыр. Что вы знаете о видах бесплатного сыра ? ;)
...
Рейтинг: 0 / 0
PL/SQL vs.Transact SQL
    #35977416
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ддддддИнтересно, как эта задача решается на MS SQL?
намного интереснее, как такая задача появляется
...
Рейтинг: 0 / 0
25 сообщений из 395, страница 8 из 16
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / PL/SQL vs.Transact SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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