Простой Oracle pl/sql ?

User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Leberecht wrote:Подзаливаете Вы, говоря "я видел такие конструкции". ;)
Ибо, каб видели, не писали-б "Какие-то 5-6 subquery c join на временной таблице - я это не очень понял.", ибо ентот метод если не элементарный, то один из базовых.

На "CASE WHEN" ресурсов практически не тратится, зато за счёт такого джоника, большая таблица всяк будет выбрана один разъединственный разик, с оптимизатором или без него, просто каждая запись будет размножена, вот и всё.

Я действительно написал это на синкаксисе SQL Server, ибо у меня их нонче что-т около трёх сот серваков с десятками тыщ баз данных на них, ну и соответственно парой-тройкой сотен терабайт данных.
Оракл серваков раза в два поменьше будет, Сайбэйзов и того меньше.

Так что вместо предположений "Вряд ли это будет быстрее" просто поверьте мне на слово ;)
Конечно базовый, но я вас плохо понимал в силу того что вы ничего конкретного не говорили, а предлагали играть в угадайку. К тому же вы тае и не написали, как это будет выглядить на Оракле из чего я понял, что вы сами не знаете, несмотря на то что вы сами говорите, что это "базовый метод". Но меня это не удивляет, т.к. свою квалификацию вы измеряете в количестве "серваков с десятками тыщ баз данных на них".
Вы мне напомнили одного чела, который рассказывал про то какая его жена крутая программистка. Там квалификация выражалась в количестве символов, печатаемых на клавиатуре.
Так чем вы на работе занимаетесь, backup-ом ваших терабайтов? Задача непростая, но к написанию queries имеет малое отношение. А если нет, то при чём здесь "пара-тройка сотен терабайт данных"?
Напишите, как будет выглядить на Оракле предложенный вами же "базовый метод" в виде SQL и тогда можно поверить, что вы имеете какое-то отношение к написанию queries. Несмотря на то, что "Оракл серваков раза в два поменьше", но этого всё равно должно хватить у вас для описания "базового метода".
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
User avatar
metaller
Уже с Приветом
Posts: 4532
Joined: 06 Jul 2011 12:22
Location: Oak Harbor, WA

Re: Простой Oracle pl/sql ?

Post by metaller »

/me взял попкорн и занял место в первом ряду ;)
Я не хочу оплачивать ничьи аборты, велферы или детсады. Каждый должен сам принимать решения и нести за них ответственность.
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Можно я рядом присяду? Я тоже хочу насладиться query от крутого чувака с "тыщами баз данных".
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

oleg lebedev wrote:Конечно базовый, но я вас плохо понимал в силу того что вы ничего конкретного не говорили, а предлагали играть в угадайку.
Похоже, явно не для Вас он базовый. :D

Хотя для большинства спецов в базах данных растолковывать подобное, всё равно, что шахматисту после фразы "детский мат" пояснять, как он делается :wink:

А Вам тут и разжевали даже http://forum.privet.com/viewtopic.php?p ... 9#p5401439
А вы всё равно "непонятно, непонятно! :sadcry: квери напиши :angry: "

Ладненько, учите лучше мат часть
Ordnung muss sein!
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Leberecht wrote:
oleg lebedev wrote:Конечно базовый, но я вас плохо понимал в силу того что вы ничего конкретного не говорили, а предлагали играть в угадайку.
Похоже, явно не для Вас он базовый. :D

Хотя для большинства спецов в базах данных растолковывать подобное, всё равно, что шахматисту после фразы "детский мат" пояснять, как он делается :wink:

А Вам тут и разжевали даже http://forum.privet.com/viewtopic.php?p ... 9#p5401439
А вы всё равно "непонятно, непонятно! :sadcry: квери напиши :angry: "

Ладненько, учите лучше мат часть
Ладненько, учите лучше мат часть
Вынужден признать, что вы правы и учить мат часть - это остро необходимая реальность что бы выжить в условиях конкуренции в Америке. Занимаюсь этим всё время и спасибо за напоминание. Но это, похоже, единственное, что вы могли выжать из себя.

Если же касаться всего остального, то я не буду отвечать на каждую вашу фразу по 3 причинам:
1. Я не всё понимаю, что вы там написали
2. Я не хочу ставить вас в неловкое положение.
3. Я не хочу тратить больше своё время на то что уже не имеет смысл.

Чтобы cut crap, то ответьте в одной фразе, где query о которой вы столько булькали? А ещё лучше, где само query?

Во вторых, я бы не ставил вас в неловкое положение если бы вы сами добровольно не полезли в заLUпу, и не спровоцировали меня на конкретные вопросы, на которые у вас не было конкретных ответов. Я не отношусь к категории людей, получающих удовольствие от унижения других. Поэтому, когда вы предоставили свой код, то я понял с кем имею дело. Вы там где-то сидите в тёмном уголке и проявляете свои skills, когда нужно восстановить файлы, когда кто случайно их удалил. Иначе вы бы не меряли свою квалификацию в терабайтах, хранящихся на каких то серверах.
Вы по всей видимости, даже не подозревали, что temporary table в Оракле и SQL Server - это совершенно разные структуры, имеющие мало общего между собой.
Я не стал вас "дожимать" в этом вопросе, и вы могда уйти и сохранить своё лицо. Вместо этого вы пытались унизить меня и возвысить себя опираясь на то что у вас "тыщы баз данных". Для меня это звучало, как признание, что написанием кода вы не занимались. Никто из программистов не меряет свои достижения такими категориями.
Когда я решил после этого расставить точки над i и спросить про конкретный код, то как и ожидал получил невнятный лепет. Кода не получил, т.к. у вас нет необходимых знаний, опыта и понимания как работает Оракл.
Поэтому не надо ничего писать добавочно, т. к самое лучшее, что вы могли написать, вы уже написали.
Ладненько, учите лучше мат часть
Следуйте своим же рекомендациям и будет вам счастье.
Не уверен, что я захочу вам отвечать больше.
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

Со смеху помираю: сперва изрядно вляпались на незнании элементарщины из разряда "детский мат", а сейчас "кулаками после драки" :ROFL:
Ordnung muss sein!
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Leberecht wrote:Со смеху помираю: сперва изрядно вляпались на незнании элементарщины из разряда "детский мат", а сейчас "кулаками после драки" :ROFL:
До того как умрёте, где query для Оракл?
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

Да угомонитесь-же наконец, "коллега" :D
Ент типа "А как этот-же детский мат, но чёрными сделать?"

Я там в Вашу много-абзацовую речь не вчитывался особо.
Надеюсь, Вы там не "вляпались по-второй", заявляя, что подобная затея на PL/SQL не реализуема? :wink:
Ordnung muss sein!
User avatar
metaller
Уже с Приветом
Posts: 4532
Joined: 06 Jul 2011 12:22
Location: Oak Harbor, WA

Re: Простой Oracle pl/sql ?

Post by metaller »

Leberecht wrote:заявляя, что подобная затея на PL/SQL не реализуема? :wink:
Да при чём тут pl/sql ? Это процедурный язык и речь не о нём. Ждем решения поставленной задачи для Oracle от великого гуру Leberecht.
Я не хочу оплачивать ничьи аборты, велферы или детсады. Каждый должен сам принимать решения и нести за них ответственность.
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

Народ, да вы попросту поиздеваться, поприкалываться в воскресение вечером порешили что-ли? :pain1:

Ну ладно, получайте вашу ораклёвую версию

Ент понятно для создания и заполнения якобы большой таблички с кучей записей, которую надо "развернуть"

Code: Select all

create table BigWithManyColumns(AAA int, i1 int, i2 int, i3 int);
insert into BigWithManyColumns values(100,10,20,30);
insert into BigWithManyColumns values(200,10,20,30);
commit;
А вот собственно и "разворот"

Code: Select all

select a.aaa,  
    case b.key when 1 then I1 when 2 then I2 when 3 then I3 end   as I
from BigWithManyColumns a
    cross join
        (select 1 as key from dual
        union
        select 2 from dual
        union
        select 3 from dual) b
 order by a.aaa;
Пследний "order by a.aaa" само собой чисто для наглядности.

Ровно так, как я в самом первом своём ответе здесь и написал
" создаёте временную табличку (ну или попросту саб-квери из 5 или скольки там рекордов) и с ней джойните большую."

Спокойной ночи всем! :wink:
Ordnung muss sein!
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

metaller wrote:
Leberecht wrote:заявляя, что подобная затея на PL/SQL не реализуема? :wink:
Да при чём тут pl/sql ? Это процедурный язык и речь не о нём. Ждем решения поставленной задачи для Oracle от великого гуру Leberecht.
Вы меня опередили. Я только собирался объяснить товарищу, что Oracle SQL и PL/SQL совершенно разные вещи, а это уже стало неактуально в связи с вашим объяснением..
Для того чтобы съэкономить ему мнения от шатаний по форумам для новичков в Оракле, я хотел бы его проинформировать, что есть Оракл БД, а есть PL/SQL engine, который предназначен для Oracle DB access. Эти вещи настолько разные и независимые, что скажем varchar2 в базе имеет limit в 4К, в то время как в PL/SQL это 32К. PL/SQL engine вполне можно перекомпелировать на работающей базе и при этом база данных об этом может и не подозревать. Вместо PL/SQL можно писать proсedures на Java и ничего в принципе не изменится с точки зрения написания queries. Синтакс будет другой, а смысл тот же самый.

Code: Select all

Надеюсь, Вы там не "вляпались по-второй", заявляя, что подобная затея на PL/SQL не реализуема? 
Чтобы вляпаться по второй, нужно вляпаться по первой. Я пока этого не заметил. Я не путаю плоды вашей больной фантазии с реальностью.
Я нигде не писал, что ваша идея нереализуема. Её можно реализовать на Оракле несколькими способами. Я против идеи не имею ничего против. Я просто думаю, что это не лучшее решение в данном случае.
Перестали бы вы, Leberecht выпендриваться. Ваш уровень понятен. Повинитесь, вас простят и поймут. В конце концев мы тоже люди и сострадание нам не чуждо. К тому же вы тут приобрели новые знания в области Оракла и это тоже пойдёт к вам на пользу.
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Leberecht wrote:Народ, да вы попросту поиздеваться, поприкалываться в воскресение вечером порешили что-ли? :pain1:

Ну ладно, получайте вашу ораклёвую версию

Ент понятно для создания и заполнения якобы большой таблички с кучей записей, которую надо "развернуть"

Code: Select all

create table BigWithManyColumns(AAA int, i1 int, i2 int, i3 int);
insert into BigWithManyColumns values(100,10,20,30);
insert into BigWithManyColumns values(200,10,20,30);
commit;
А вот собственно и "разворот"

Code: Select all

select a.aaa,  
    case b.key when 1 then I1 when 2 then I2 when 3 then I3 end   as I
from BigWithManyColumns a
    cross join
        (select 1 as key from dual
        union
        select 2 from dual
        union
        select 3 from dual) b
 order by a.aaa;
Пследний "order by a.aaa" само собой чисто для наглядности.

Ровно так, как я в самом первом своём ответе здесь и написал
" создаёте временную табличку (ну или попросту саб-квери из 5 или скольки там рекордов) и с ней джойните большую."

Спокойной ночи всем! :wink:
Это какой-то бред. Почему это должно работать быстро? Я не уверен, что это работает правильно.
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

Ды ладно, Олеж, вляпались по-полной, хватит уж дурачком-то прикидываться.
Вот-же Вам эта элементарщина на самом разобычном ораклёвом SQLе (не PL/SQL)
Ент понятно для создания и заполнения якобы большой таблички с кучей записей, которую надо "развернуть"

Code: Select all

create table BigWithManyColumns(AAA int, i1 int, i2 int, i3 int);
insert into BigWithManyColumns values(100,10,20,30);
insert into BigWithManyColumns values(200,10,20,30);
commit;
А вот собственно и "разворот"

Code: Select all

select a.aaa,  
    case b.key when 1 then I1 when 2 then I2 when 3 then I3 end   as I
from BigWithManyColumns a
    cross join
        (select 1 as key from dual
        union
        select 2 from dual
        union
        select 3 from dual) b
 order by a.aaa;
Вы тут явно решили пофлидить кучей параграфов, дабы скрыть (завуалировать) Ваше полнейшее незнание такой элементарщины, как подзапросы? :wink:

Боже праведный, а народ ещё чёй-т жалуется на индусов и их код :ROFL:
Ordnung muss sein!
Leberecht
Уже с Приветом
Posts: 6888
Joined: 06 Jan 2010 07:13
Location: Miami Beach, FL

Re: Простой Oracle pl/sql ?

Post by Leberecht »

oleg lebedev wrote:Это какой-то бред. Почему это должно работать быстро? Я не уверен, что это работает правильно.
Дык а я, уже начитамши про Ваши познания в базах данных, абсолютно уверен в том, что Вы даже опрочесть ентот распростецкий запросец окажитесь не в состоянии и само собой усомнитесь в том, что он работает правильно :D
Last edited by Leberecht on 18 Feb 2013 15:49, edited 1 time in total.
Ordnung muss sein!
User avatar
oleg lebedev
Уже с Приветом
Posts: 2053
Joined: 03 Dec 2003 23:13
Been thanked: 1 time

Re: Простой Oracle pl/sql ?

Post by oleg lebedev »

Ды ладно, Олеж, вляпались по-полной, хватит уж дурачком-то прикидываться.
Вот-же Вам эта элементарщина на самом разобычном ораклёвом SQLе (не PL/SQL)
Про PL/SQL вы сами упомянули и очень не к месту. Я вам объяснил разницу между SQL и PL/SQL и сейчас вы уже пытаетесь набрасываться со смесью ваших фантазий и новыми знаниями, которые вы тут подчерпнули здесь несколько минут назад. Я вижу, что урок вы усвомли хорошо и, надеюсь, что уже не будете путать SQL и PL/SQL впредь.
Однако ваше невежество лезет из всех щелей и каждой фразы, которые вы выжимаете из себя. Например, вы тут разорялись, что я не понимаю что такое subquery. Там где вы написали свой код, укажите, пожалуйста, то что вы называете subquery. Мне это поможет немного понять ваш словесный поток, наполненый терминологией, упомянутой не к месту.
"Прежде чем вступать в дискуссию, подумай о том, в состоянии ли ты принять мнение другого человека." (Кимоното Херовато)

Return to “Вопросы и новости IT”