Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Вниманию SQL-гуру предлагается недавно встретившаяся в жизни задачка. Дано 2 таблицы create table t1 (col1 int, col2 int, primary key col1); create table t2 (col1 int, col2 int, primary key col1); insert into t1 (1, 1); insert into t1 (1, 2); insert into t1 (2, 2); insert into t2 (2, 2); insert into t2 (3, 1); Требуется : получить таблицу t3, состоящую из всех встреченных ключей и сумм по этим ключам. Т.е. результат должен быть col1 sum(col2) 1 3 2 4 3 1 Чем универсальней (в плане СУБД) тем лучше. Свое решение опубликую позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 23:56 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
На первый взгляд ничего, кроме GROUP BY по UNION, не требуется. В чем подвох ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2005, 00:11 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
еще интересно что за primary key такой если можно несколько одинаковых значений в таблицу t1 внести. какая-то неудачная задачка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2005, 00:16 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Rolloчто за primary key такой если можно несколько одинаковых значений в таблицу t1 внести.Угу... Существенное замечание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2005, 00:36 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Вроде ChA все уже сказал. Примерно так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2005, 09:14 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Задачка действительно нетрудная. Я бы сказал рутинная. mir сделал селектом по селекту, но это непринципиально. Если конкретный сервер этого не поддерживает, то всегда можно сделать через временные таблицы. А в моем варианте буковок больше! Код: plaintext 1. 2. 3. Однако по теме форума. Таких одинаковых таблиц в базе быть не должно. Чем они отличаются? Названием? Если это данные разных операций, то лучше ввести еще одно поле - признак операции table t ( Operation int, col1 int, col2 int ) ================== Уважаемы господа! Время от времени у всех нас получаются интересные запросы. Может быть стоит завести топик - "Золотая коллекция запросов"? Не задачки задавать, а просто делится опытом. У меня сечас как-раз есть один забавный SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2005, 13:12 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
select from (select..) не понимает уйма баз. И хотелось бы обойтись без временных таблиц. Anyone ? PS: В условии неточность - конечно,col1 не primary key и даже не unique. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 23:05 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloselect from (select..) не понимает уйма баз. И хотелось бы обойтись без временных таблиц. Anyone ?Баз = СУБД ? Так view-то на UNION ALL что мешает сделать, это-то практически все СУБД понимают ? А потом выборка из него с группировкой, полагаю, что это самый практичный вариант. Наверняка, вариант, который Вы можете предложить, будет намного дороже в смысле выполнения сервером. Можно такой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. P.S. Чесслово, суть вопроса понятней не стала, точнее даже, смысл универсальности. Наверняка, за счет вопиющей неоптимальности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 01:57 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
ChA vybegalloselect from (select..) не понимает уйма баз. И хотелось бы обойтись без временных таблиц. Anyone ?Баз = СУБД ? Так view-то на UNION ALL что мешает сделать, это-то практически все СУБД понимают ? А потом выборка из него с группировкой, полагаю, что это самый практичный вариант. Наверняка, вариант, который Вы можете предложить, будет намного дороже в смысле выполнения сервером. Можно такой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. P.S. Чесслово, суть вопроса понятней не стала, точнее даже, смысл универсальности. Наверняка, за счет вопиющей неоптимальности... 1> SELECT col1, SUM(col2) + (SELECT SUM(t2.col2) FROM t2 WHERE t2.col1 = t1.col1) FROM t1 2> 3> ; Msg 21, Level 14, State 0: ASA Error -1005004: Subqueries are allowed only as arguments of comparisons, IN, and EXISTS Subquery SELECT/UNION at line: 1, -- (df_Heap.cxx 4753) Sybase IQ er 12.5 Try again... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 03:30 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Кстати, я бы поострегся делать выводы об оптимальности-неоптимальности запросов без привязки к конкретной СУБД. Например, нынче я работаю с такой экзотической вещью как Sybase IQ, которая хранит таблицы по столбцам. В результате чего все понятия об оптимизации становятся с ног на голову. К примеру, приходится избавляться от view вида SELECT * ..., потому что цена выборки зависит от числа столбцов в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 03:35 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloКстати, я бы поострегся делать выводы об оптимальности-неоптимальности запросов без привязки к конкретной СУБД. Например, нынче я работаю с такой экзотической вещью как Sybase IQ, которая хранит таблицы по столбцам. В результате чего все понятия об оптимизации становятся с ног на голову. К примеру, приходится избавляться от view вида SELECT * ..., потому что цена выборки зависит от числа столбцов в результате.Тоже кстати... Тот факт, что СУБД хранит таблицы по столбцам, вовсе не обязательно влечет какую-то особенную зависимость цены выборки от числа столбцов в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 09:36 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 10:32 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
авторMsg 21, Level 14, State 0: ASA Error -1005004: Subqueries are allowed only as arguments of comparisons, IN, and EXISTS Subquery SELECT/UNION at line: 1, -- (df_Heap.cxx 4753) ASA отлично справится с запросом, предложенным mir ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 12:09 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
2 daw Респект. Я сходу до этого не допер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 13:51 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloPRIMARY KEY(col1, col2) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 14:17 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
daw Код: plaintext 1. 2. 3. 4. $ ./myisql 1> select isnull(t1.col1, t2.col1), isnull(sum(t1.col2), 0) + isnull(sum(t2.col2), 0) from t1 full outer join t2 on 1 = 0 group by isnull(t1.col1, t2.col1) ; isnull(t1.col1,t2.col1) isnull(sum(t1.col2),0)+isnull( ----------------------- ------------------------------ (0 rows affected) НО если переделать JOIN на t1.col1 = t2.col1 то все работает : 1> select isnull(t1.col1, t2.col1), isnull(sum(t1.col2), 0) + isnull(sum(t2.col2), 0) from t1 full outer join t2 on t1.col1 = t2.col1 group by isnull(t1.col1, t2.col1) isnull(t1.col1,t2.col1) isnull(sum(t1.col2),0)+isnull( ----------------------- ------------------------------ 2 4 1 3 3 1 (3 rows affected) Ну и по поводу цены выборки в СУБД с постолбцовым расположением данных. Дано : таблица из 2 колонок, 1M записей, каждая колонка 100 байт. Требуется : определить X1 - число прочитанных с диска байт для случая select col1 from t1 и X2 - для случая select col1, col2 from t1. Бонус и премия Филдса уходят тому, кто докажет X1 = X2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 22:54 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
funikovyuri авторMsg 21, Level 14, State 0: ASA Error -1005004: Subqueries are allowed only as arguments of comparisons, IN, and EXISTS Subquery SELECT/UNION at line: 1, -- (df_Heap.cxx 4753) ASA отлично справится с запросом, предложенным mir А IQ ни асилил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 23:06 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloКстати, я бы поострегся делать выводы об оптимальности-неоптимальности запросов без привязки к конкретной СУБД.Ваше право, но Вы-то пытаетесь решить единым запросом на большинстве СУБД, а не на одной конкретной. Или Вы уверены, что Ваш запрос будет одинаково оптимален для всех ? С нетерпением ожидаю его опубликования... vybegalloКакой ответ будет на вопрос ? Кстати, Ваша модификация варианта-daw на t1.col1 = t2.col1 фактически приводит его к варианту-Cat2 , что может привести к неправильному ответу при других исходных данных. Надеюсь, понятно при каких ? Тем не менее, вариант-daw вполне рабочий и, с теоретической точки зрения, абсолютно верный для всех СУБД, правильно понимающих FULL JOIN, но MySQL(?) просто неправильно его обрабатывает. Т.е., надо еще учитывать, что некоторые СУБД могут не только не понимать синтаксис запроса, но и просто неверно его выполнять ? :) P.S. daw, прекрасный вариант ! К сожалению, исключил для себя FULL JOIN, так как точно встречался с СУБД, который просто не знали что это такое :) Например, Informix 7.xx. Кстати, он же не понимал и подзапросов в пункте FROM(вариант-mir)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 02:05 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Ok, мой вариант (при замене case на isnull сводится к уже описанному) : select case when t1.col1 is null then t2.col1 else t1.col1 end col1, sum (case when col2 is null then t2.col2 when t2.col2 is null then col2 else col2 + t2.col2 end) col2, from t1 full outer join t2 on(t1.col1 = t2.col1) group by case when t1.col1 is null then t2.col1 else t1.col1 end; Так на каких данных он будет давать неправильные результаты ? А насчет оптимальности - как только вы предложите запрос с Union, понимаемый Sybase IQ 12.5 - так сразу я его протестирую и выложу результаты и даже планы выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 04:20 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloНу и по поводу цены выборки в СУБД с постолбцовым расположением данных. Дано : таблица из 2 колонок, 1M записей, каждая колонка 100 байт. Требуется : определить X1 - число прочитанных с диска байт для случая select col1 from t1 и X2 - для случая select col1, col2 from t1. Бонус и премия Филдса уходят тому, кто докажет X1 = X2А при чем здесь постолбцовое хранение? Или вы считаете, что для построчного хранения X1 = X2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 06:37 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo03 Так на каких данных он будет давать неправильные результаты ? ну, например: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 09:49 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo03Так на каких данных он будет давать неправильные результаты ?Это же очевидно, см. пример daw... vybegallo03А насчет оптимальности - как только вы предложите запрос с Union, понимаемый Sybase IQ 12.5 - так сразу я его протестирую и выложу результаты и даже планы выполнения.Простите, но Вы невнимательны ChAВы-то пытаетесь решить единым запросом на большинстве СУБД, а не на одной конкретной. При чем здесь оптимальность только для Sybase IQ 12.5 ? Для другого сервера он может оказатся неоптимальным, или, по крайней мере, вариант с UNION ALL и GROUP BY может оказатся на них более оптимальным. Вам был предложен вариант, который выполнялся бы практически на всех вменяемых СУБД и с высокой степенью оптимальности. Это view на UNION ALL и группировка по нему. P.S.Тоже имею слабость решать некоторые задачи одним универсальным запросом, но всегда отдаю себе отчет, что оптимальность при этом может сильно пострадать... P.P.S. А на вопрос в очередной раз так и не ответили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 12:48 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
mir vybegalloНу и по поводу цены выборки в СУБД с постолбцовым расположением данных. Дано : таблица из 2 колонок, 1M записей, каждая колонка 100 байт. Требуется : определить X1 - число прочитанных с диска байт для случая select col1 from t1 и X2 - для случая select col1, col2 from t1. Бонус и премия Филдса уходят тому, кто докажет X1 = X2А при чем здесь постолбцовое хранение? Или вы считаете, что для построчного хранения X1 = X2? Представьте себе - да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:03 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
ChA vybegallo03Так на каких данных он будет давать неправильные результаты ?Это же очевидно, см. пример daw... vybegallo03А насчет оптимальности - как только вы предложите запрос с Union, понимаемый Sybase IQ 12.5 - так сразу я его протестирую и выложу результаты и даже планы выполнения.Простите, но Вы невнимательны ChAВы-то пытаетесь решить единым запросом на большинстве СУБД, а не на одной конкретной. При чем здесь оптимальность только для Sybase IQ 12.5 ? Для другого сервера он может оказатся неоптимальным, или, по крайней мере, вариант с UNION ALL и GROUP BY может оказатся на них более оптимальным. Вам был предложен вариант, который выполнялся бы практически на всех вменяемых СУБД и с высокой степенью оптимальности. Это view на UNION ALL и группировка по нему. P.S.Тоже имею слабость решать некоторые задачи одним универсальным запросом, но всегда отдаю себе отчет, что оптимальность при этом может сильно пострадать... P.P.S. А на вопрос в очередной раз так и не ответили... Прежде чем обсуждать оптимальность, желательно написать запрос, не выдающий синтаксических ошибок. Ну такая уж у меня попалась невменяемая СУБД, что select from (select) не понимает. Не она одна такая непонятливая, кстати - и Informix 7, и DB2 7.1 (насчет 8 не помню) тоже не понимают таких вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:18 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
А что за вопрос-то ? Нету там PK, ни col1, ни col, col2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:19 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
ChA. Если СУБД не поддерживает FULL OUTER JOIN, то уж where ... *=* ... должна поддерживать? Хотя, конечно, UNION ALL в этой задаче - единственно верное решение. А что лучше по VIEW, или по TEMPTABLE - зависит от конкретной СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:33 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Если СУБД не поддерживает full outer join, то это не потому, что разработчики не смогли договориться о синтаксисе. А потому, что не разработали такую фичу. Поэтому врядли оракловский синтаксис *=* спасет пользователей Informix 7. К сожалению, Sybase IQ почему-то не понимает и Outer join on (1=0). так что дополненная и исправленная версия selecta будет (при условии что col1 положительно, что с ключами как правило и бывает) select isnull (t1.col1,t2.col1) col1, sum(isnull (t1.col2, t2.col2)) col2 from t1 full outer join t2 on(t1.col1 = -t2.col1) group by isnull (t1.col1,t2.col1) ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:45 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo Прежде чем начинать раздачу призов и бонусов и требовать от других отсутствия синтаксических ошибок, желательно научится правильно формулировать задачу. Если Вы решили задать свой вопрос в Проектировании, а не на специализированном форуме, то принимайте ответы как есть. Кстати. Ваш вариант с CASE выдаст синтаксическую ошибку на СУБД, которые поддерживают только ANSI-SQL. Да и Ваш детский восторг в заглавном постинге по поводу решения элементарной задачи просто смешон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:51 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo. *=* НЕ оракловский синтаксис. Вы бы почитали что-нибудь по SQL. MS SQL 6.5 поддерживал =, *=,=*,*=*, но не поддерживал никаких JOIN вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 21:56 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Cat2vybegallo Прежде чем начинать раздачу призов и бонусов и требовать от других отсутствия синтаксических ошибок, желательно научится правильно формулировать задачу. Если Вы решили задать свой вопрос в Проектировании, а не на специализированном форуме, то принимайте ответы как есть. Кстати. Ваш вариант с CASE выдаст синтаксическую ошибку на СУБД, которые поддерживают только ANSI-SQL. Да и Ваш детский восторг в заглавном постинге по поводу решения элементарной задачи просто смешон. Какую часть предложения "Чем универсальней (в плане СУБД) тем лучше" вы не понимаете ? И какая из реальных СУБД (Oracle, MS SQL, Informix, DB2, Sybase, Mysql ) не понимает "case" ? Ну и увидеть "детский восторг" в начальном постинге - это хорошая, качественная трава. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 22:32 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloПрежде чем обсуждать оптимальность, желательно написать запрос, не выдающий синтаксических ошибок.Если это претензия ко мне, то извините, что предложенный вариант не поняла IQ, с точки зрения ANSI вариант был синтаксически правильный. А еще IQ... :) Кстати, вариант все равно был с червоточинкой, приблизительно на подобных же данных, что и Ваш. vybegalloНу такая уж у меня попалась невменяемая СУБД, что select from (select) не понимает. Не она одна такая непонятливая, кстати - и Informix 7, и DB2 7.1 (насчет 8 не помню) тоже не понимают таких вариантов.Ну так CREATE VIEW они поддерживают ? Про select from (select) вообще речи нет, что Вы на этом варианте-то зациклились... vybegalloК сожалению, Sybase IQ почему-то не понимает и Outer join on (1=0). так что дополненная и исправленная версия selecta будет (при условии что col1 положительно, что с ключами как правило и бывает)Тупой он какой-то, этот IQ :) Тогда уж так Код: plaintext 1. 2. 3. Cat2Спокойно :) Не надо шума, а вот обещанный любопытный SELECT так и не был представлен широкой публике. Или действительно лучше создать новый топик ? Хотя есть подозрения, что перлы будут завалены массой флуда... P.S. Кстати, сталкивался с заменой UNION на FULL JOIN и наоборот, даже показалось, что это возможно всегда, пока не столкнулся с ситуацией, где эквивалентная замена оказалась невозможной. P.P.S. И все-таки сложно представить СУБД, где реализация FULL JOIN оптимальнее UNION... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 23:40 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
ChA Тупой он какой-то, этот IQ :) Тогда уж так Код: plaintext 1. 2. 3. "Папа, ви будете смеяться, но ваша дочь опять умерла !" (С) isnull (t1.col1,t2.col1) col1, sum(isnull (t1.col2, t2.col2)) col2 from t1 full outer join t2 on(t1.col1 = -t1.col1 and t1.col1 = 0) group by isnull (t1.col1,t2.col1) ; col1 col2 ----------- ---------------------------- (0 rows affected) ChA P.S. Кстати, сталкивался с заменой UNION на FULL JOIN и наоборот, даже показалось, что это возможно всегда, пока не столкнулся с ситуацией, где эквивалентная замена оказалась невозможной. Пример ? ChAP.P.S. И все-таки сложно представить СУБД, где реализация FULL JOIN оптимальнее UNION... Имейте терпение, Штубинг - скоро дойдет дело и до планов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 00:44 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo"Папа, ви будете смеяться, но ваша дочь опять умерла !" (С) ... (0 rows affected)Нда, это уже диагноз. Как-то своеобразно IQ понимает FULL JOIN или у него оптимизатор больной... Хорошо, а так Код: plaintext 1. 2. 3. vybegalloПример ?Давно было, года два-три назад, сейчас даже и не припомню, если только случайно... vybegalloдойдет дело и до планов...Да какие уж тут планы :) И вообще, здесь, скорее, уже статистика, ЦПУ, сканы, риды и прочая мутотень... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 01:32 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
ChA vybegallo"Папа, ви будете смеяться, но ваша дочь опять умерла !" (С) ... (0 rows affected)Нда, это уже диагноз. Как-то своеобразно IQ понимает FULL JOIN или у него оптимизатор больной... Хорошо, а так Код: plaintext 1. 2. 3. vybegalloПример ?Давно было, года два-три назад, сейчас даже и не припомню, если только случайно... vybegalloдойдет дело и до планов...Да какие уж тут планы :) И вообще, здесь, скорее, уже статистика, ЦПУ, сканы, риды и прочая мутотень... Ну, как и ожидалось, вариант t1.col1=t1.col1+1 тоже не сработал. Я думаю, оно в условии Join понимает только столбцы и только соединяемых таблиц. Вдобавок пришлось от ключа bigint перейти к ключу char(32) и вариант с минусом тоже на прокатил. Перешел на view. Вообще, этот Sybase IQ - забавная штука. На сложных запросах, говорят, летает как реактивный, при достаточно примитивном не cost-based оптимизаторе. Падает в среднем раз в день. Книги отсутствуют как класс. Внутренняя структура страниц и индексов нигде не описана. Сертификатов не выдают :-). Индексов штук 6, и можно строить несколько индексов разных типоов на одной колонке. Данные хранит сразу проиндексированными и в упакованном виде, обещают что даже при всех построенных индексах занимаемое место на диске за счет упаковки не превышает размера чистых данных. В общем, сплошная экзотика :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 21:02 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloВ общем, сплошная экзотикаМожет в морг ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 23:22 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Ну, зачем же сразу в морг. Если оно запрос выполняет за 2 часа, на который DB2 потратило 2 дня - то можно и потерпеть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 00:49 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegalloЕсли оно запрос выполняет за 2 часа, на который DB2 потратило 2 дня - то можно и потерпеть...Сугубая заточка под OLAP ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 01:35 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
Да. Вплоть до монопольного доступа на запись к таблице. Звездообразная схема поддерживается автоматически - указываешь для столбца число возможных значений (cardinality) и после чего хоть char(300) его описывай - хранить будет только 1-2-4 байта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 05:28 |
|
||
|
Суммирование таблиц - задачка по SQL
|
|||
|---|---|---|---|
|
#18+
vybegallo. Уже не понимаю смысла топика. Есть проблемы - в соответсвующий форум. Но скорее тут попытка показать свою крутизну, которой на самом деле не оказалось. Мы так и не увидели Вашего супер-пупер решения задачи для всех sql-серверов и народов. Если я его не увижу в течении суток, то топик будет закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 21:23 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545818]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
244ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 584ms |

| 0 / 0 |
