|
|
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW Ес ! Да...Это просто супер ! UNION !!!!! Но есть одна проблема - ПРОДУКТИВНОСТЬ = 0 !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:25 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
MW тот же разрыв только у меня он между общим справочником и отдельными справочниками а у вас между журналом и всомогательными справочниками. То время которое у меня тратится на обновление общей таблицы аналитики у вас пойдет на обновление вспомогательных таблиц в момент добавления записи в журнал Я же говорю это разница между первым и вторым из моего поста от 19-08 Где хочешь иметь тормоза там и имеешь. Мне всё таки кажется что мой вариант здесь удачнее поскольку справочники меняются относительно редко а вот журнал обновляется на порядок чаще. А то что могут удалить строку справочника, так это варварство. По бизнесс логике неположено. Значить можно просто запретить на уровне базы удалять строки и изменять ключевые поля в справочниках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:27 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
Вы не правы! Если вы повнимательнее взглянете на условие каждого запроса то поймете что тем не менее одна запись таблицы обрабатывается один раз и если построить индекс на ID и VID вы получите более высокую производительность чем если возметесь совмещать справочники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:30 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW А что если результат нужно отсортировать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:32 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
И лучше пусть оператор подождет полсекунды при записи документа в базу чем по пол секунды при выборке каждой строки из 20 тысяч например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:32 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW поправочка : 20 миллионов, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:34 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
Тем более... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:37 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>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,... ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:39 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>Eter Panji Дело в том, что сейчас наша система работает так, как предложил MW. А собираемся перейти на вариант, предложенный вами. Но... очень большие сомнения существуют :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:42 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
А побробовать сначала и посмотреть на план запроса и скорость исполнения? Вашу модель данных это никак не нарушит. В реальности полный журнал операций с выложенной разношерстной аналитикой никогда не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:44 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW На счет планов запросов - все глаза просмотрели :) Как-то по дурацки получается : если присутствует UNION добится использования индексов никак не получается. Что касается остального - пост 14 ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 20:48 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW Я не согласен, что "В реальности полный журнал операций с выложенной разношерстной аналитикой никогда не требуется". Достаточно посмотреть любую готовую систему, ту же 1С, например : первое, что мы видим, это как-раз "журнал операций с выложенной разношерстной аналитикой" !!! Там даже монятие есть такое : "виды субконто" (читай : виды аналитики). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 21:02 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
Ludi!! Ispol'zyite Oracle's analytic functions i ne stroite problemy, kotorye potom neobhodimo geroicheski preodolevat'! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 08:02 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
to ov >ту же 1С, например : первое, что мы видим, это >как-раз "журнал операций с выложенной разношерстной аналитикой" !!! А вы пробовали 1с на 20 млн записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 08:58 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>>MW Да, 1С на 20млн - это нонсенс. Дело в том что там не существует так называемой "виртуализации", тоесть весь журнал выбирается за один раз. Но то же самое - любой бухгалтерский документ: например, акт о приеме материалов - там тоже присутствует аналитика. И когда необходимо высести "журнал документов", в нем есть поле : от кого получено, кому передано (Аналитика) и т.д. Что в этом случае делать ? >Oracle X-pert Просветите, если можно, что такое "analytic functions". С удовольствием исползуем, если в природе такое есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 09:22 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
> ov >Что в этом случае делать ? Дальнейшее продолжение спора _здесь_ сильно отвлекает от основной работы. :((( Если у вас есть желание можно продолжить по e-mail или ICQ. merlinw@yandex.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 09:38 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>MW Да, согласен. По емайлу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 09:42 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
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.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 09:57 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
>Oracle X-pert Да, интересно. Очень даже. Но для какой версии Oracle это работает ? (хотябы в каком разделе догументации искать ?) Analytic SQL Features in Oracle9i ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 10:19 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
Razdel - Oracle Data warehouse. Version:: SQL:: 8i/9i PLSQL - 9i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2003, 11:15 |
|
||
|
SELECT : вопрос к гуру :)
|
|||
|---|---|---|---|
|
#18+
2 ov, MV: Глупый вопрос -- а почему UNION, а не UNION ALL ??? Ведь по сути, m.id + m.vid -- это unique key? Тогда каждый из подзапросов возвращает непересекающийся набор записей -- а значит дубликаты отфильтровывать не нужно. А сортировка в приложении к запросам типа UNION ALL работает по совсем другим правилам нежели для UNION... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2003, 20:33 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32147203&tid=1990730]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 358ms |

| 0 / 0 |
