powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SELECT : вопрос к гуру :)
21 сообщений из 46, страница 2 из 2
SELECT : вопрос к гуру :)
    #32147194
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
Ес !
Да...Это просто супер !
UNION !!!!!
Но есть одна проблема - ПРОДУКТИВНОСТЬ = 0 !!!
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147195
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MW
тот же разрыв только у меня он между
общим справочником и отдельными справочниками
а
у вас между журналом и всомогательными справочниками.

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

Я же говорю это разница между первым и вторым из моего поста от 19-08
Где хочешь иметь тормоза там и имеешь.

Мне всё таки кажется что мой вариант здесь удачнее поскольку справочники меняются относительно редко а вот журнал обновляется на порядок чаще.

А то что могут удалить строку справочника, так это варварство. По бизнесс логике неположено. Значить можно просто запретить на уровне базы удалять строки и изменять ключевые поля в справочниках.
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147196
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не правы! Если вы повнимательнее взглянете на условие каждого запроса то поймете что тем не менее одна запись таблицы обрабатывается один раз и если построить индекс на ID и VID вы получите более высокую производительность чем если возметесь совмещать справочники.
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147197
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
А что если результат нужно отсортировать ?
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147198
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И лучше пусть оператор подождет полсекунды при записи документа в базу чем по пол секунды при выборке каждой строки из 20 тысяч например
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147199
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
поправочка : 20 миллионов, например.
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147200
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем более...
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147201
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
Так ка на счет
select * from
(
select m.id, m.vid, m.summa, mt.name
from mainbook m, link_material lm, material mt
where m.id = lm.mainbook_id
and m.vid = 1
and lm.material_id = mt.id
union
select m.id, m.vid, m.summa, p.name
from mainbook m, link_personal lp, personal p
where m.id = lp.mainbook_id
and m.vid = 2
and lp.personal_id = p.id
union
и т.п
) t order by 0,1,... ????
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147202
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>Eter Panji
Дело в том, что сейчас наша система работает так, как предложил MW.
А собираемся перейти на вариант, предложенный вами.
Но... очень большие сомнения существуют :)
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147203
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А побробовать сначала и посмотреть на план запроса и скорость исполнения?
Вашу модель данных это никак не нарушит.
В реальности полный журнал операций с выложенной разношерстной аналитикой никогда не требуется.
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147205
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
На счет планов запросов - все глаза просмотрели :)
Как-то по дурацки получается : если присутствует UNION добится использования индексов никак не получается.
Что касается остального - пост 14 !
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147209
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW

Я не согласен, что "В реальности полный журнал операций с выложенной разношерстной аналитикой никогда не требуется". Достаточно посмотреть
любую готовую систему, ту же 1С, например : первое, что мы видим, это
как-раз "журнал операций с выложенной разношерстной аналитикой" !!!
Там даже монятие есть такое : "виды субконто" (читай : виды аналитики).
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147279
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ludi!!
Ispol'zyite Oracle's analytic functions i ne stroite problemy,
kotorye potom neobhodimo geroicheski preodolevat'!
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147319
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ov
>ту же 1С, например : первое, что мы видим, это
>как-раз "журнал операций с выложенной разношерстной аналитикой" !!!

А вы пробовали 1с на 20 млн записей?
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147346
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>>MW

Да, 1С на 20млн - это нонсенс. Дело в том что там не существует
так называемой "виртуализации", тоесть весь журнал выбирается
за один раз.

Но то же самое - любой бухгалтерский документ: например, акт о приеме материалов - там тоже присутствует аналитика.
И когда необходимо высести "журнал документов", в нем есть поле :
от кого получено, кому передано (Аналитика) и т.д.

Что в этом случае делать ?


>Oracle X-pert
Просветите, если можно, что такое "analytic functions". С удовольствием
исползуем, если в природе такое есть :)
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147367
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> ov
>Что в этом случае делать ?

Дальнейшее продолжение спора _здесь_ сильно отвлекает от основной работы. :(((
Если у вас есть желание можно продолжить по e-mail или ICQ.
merlinw@yandex.ru
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147371
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>MW
Да, согласен. По емайлу
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147393
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT channel_desc, calendar_month_desc,
TO_CHAR(TRUNC(SUM(amount_sold),-6), '9,999,999,999') SALES$,
TO_CHAR(SUM(quantity_sold), '9,999,999,999') SALES_Count,
RANK() OVER (ORDER BY trunc(SUM(amount_sold), -6) DESC, SUM(quantity_sold)
DESC) AS col_rank
FROM sales, products, customers, times, channels
WHERE sales.prod_id=products.prod_id AND
sales.cust_id=customers.cust_id AND
sales.time_id=times.time_id AND
sales.channel_id=channels.channel_id AND
times.calendar_month_desc IN ('2000-09', '2000-10') AND
channels.channel_desc<>'Tele Sales'
GROUP BY channel_desc, calendar_month_desc;
-----
SELECT channel_desc, calendar_month_desc,
TO_CHAR(TRUNC(SUM(amount_sold),-6), '9,999,999,999') SALES$,
RANK() OVER (ORDER BY trunc(SUM(amount_sold),-6) DESC)
AS RANK,
DENSE_RANK() OVER (ORDER BY TRUNC(SUM(amount_sold),-6) DESC)
AS DENSE_RANK
FROM sales, products, customers, times, channels
WHERE sales.prod_id=products.prod_id AND
sales.cust_id=customers.cust_id AND
sales.time_id=times.time_id AND
sales.channel_id=channels.channel_id AND
times.calendar_month_desc IN ('2000-09', '2000-10') AND
channels.channel_desc<>'Tele Sales'
GROUP BY channel_desc, calendar_month_desc;
----
SELECT channel_desc, country_id,
TO_CHAR(SUM(amount_sold), '9,999,999,999') SALES$,
RANK() OVER (PARTITION BY GROUPING_ID(channel_desc, country_id)
ORDER BY SUM(amount_sold) DESC) AS RANK_PER_GROUP
FROM sales, customers, times, channels
WHERE sales.time_id=times.time_id AND
sales.cust_id=customers.cust_id AND
sales.channel_id= channels.channel_id AND
channels.channel_desc IN ('Direct Sales', 'Internet') AND
times.calendar_month_desc='2000-09'
AND country_id IN ('UK', 'US', 'JP')
GROUP BY CUBE( channel_desc, country_id);
------
SELECT calendar_year AS YEAR, calendar_quarter_number AS QTR,
calendar_month_number AS MO, SUM(amount_sold),
RANK() OVER (ORDER BY SUM(amount_sold) ASC NULLS FIRST) AS NFIRST,
RANK() OVER (ORDER BY SUM(amount_sold) ASC NULLS LAST) AS NLASST,
RANK() OVER (ORDER BY SUM(amount_sold) DESC NULLS FIRST) AS NFIRST_DESC,
RANK() OVER (ORDER BY SUM(amount_sold) DESC NULLS LAST) AS NLAST_DESC
FROM (
SELECT sales.time_id, sales.amount_sold, products.*, customers.*
FROM sales, products, customers
WHERE
sales.prod_id=products.prod_id AND
sales.cust_id=customers.cust_id AND
prod_name IN ('Ruckpart Eclipse', 'Ukko Plain Gortex Boot')
AND country_id ='UK') v, times
WHERE v.time_id (+) =times.time_id AND
calendar_year=1999
GROUP BY calendar_year, calendar_quarter_number, calendar_month_number;
-----
SELECT calendar_month_desc AS MONTH ,
TO_CHAR(SUM(amount_sold), '9,999,999,999') SALES$,
NTILE(4) OVER (ORDER BY SUM(amount_sold)) AS TILE4
FROM sales, products, customers, times, channels
WHERE sales.prod_id=products.prod_id AND
sales.cust_id=customers.cust_id AND
sales.time_id=times.time_id AND
sales.channel_id=channels.channel_id AND
times.calendar_year=1999 AND
prod_category= 'Men'
GROUP BY calendar_month_desc;
-----
SELECT c.cust_id, t.calendar_month_desc,
TO_CHAR (SUM(amount_sold), '9,999,999,999') AS SALES ,
TO_CHAR(AVG(SUM(amount_sold))
OVER (ORDER BY c.cust_id, t.calendar_month_desc ROWS 2 PRECEDING),
'9,999,999,999') AS MOVING_3_MONTH_AVG
FROM sales s, times t, customers c
WHERE
s.time_id=t.time_id AND
s.cust_id=c.cust_id AND
t.calendar_year=1999 AND
c.cust_id IN (6380)
GROUP BY c.cust_id, t.calendar_month_desc
ORDER BY c.cust_id, t.calendar_month_desc;
------
etc..
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147424
ov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ov
Гость
>Oracle X-pert
Да, интересно.
Очень даже.
Но для какой версии Oracle это работает ?
(хотябы в каком разделе догументации искать ?)
Analytic SQL Features in Oracle9i ?
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32147499
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Razdel - Oracle Data warehouse.

Version:: SQL:: 8i/9i
PLSQL - 9i
...
Рейтинг: 0 / 0
SELECT : вопрос к гуру :)
    #32152445
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ov, MV: Глупый вопрос -- а почему UNION, а не UNION ALL ???
Ведь по сути, m.id + m.vid -- это unique key?
Тогда каждый из подзапросов возвращает непересекающийся набор записей -- а значит дубликаты отфильтровывать не нужно.

А сортировка в приложении к запросам типа UNION ALL работает по совсем другим правилам нежели для UNION...
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SELECT : вопрос к гуру :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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