|
|
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Народ, добрый. Прошу помощи в решении задачки. Я программер, в sql не особо шарю. Задача: Есть две таблицы по 1`000`000 записей каждая, где храниться код и количество. Коды одинаковые, количество разное. Требуется получить код и разницу между суммой одинаковых кодов. Пример: таблица 1 таблица 2 код количество код количество 001 5 002 3 002 7 003 4 003 6 001 8 Что хочу на выходе: код разница 001 -3 002 4 003 2 Что пишу для этого, (хотя уверен, что скорее всего бред, а не запрос): SELECT `t`.`code` as `tc`, `d`.`code` as `dc`, COUNT(`t`.`count`)-COUNT(`d`.`count`) as `c` FROM `test` as `t`, `demo` as `d` GROUP BY `t`.`code`, `d`.`code` ORDER BY `t`.`code` Что получаю: А ничего не получаю, как нетрудно догадаться, сервак виснет в глухую. Куда копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:12:34 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenok, может ли быть в одной таблице один код более одного раза? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:14:42 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
да, чтобы было понятнее, кодов примерно 100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:15:17 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
коды в пределах каждой таблицы уникальны? наборы кодов в разных таблицах совпадают или есть такие, что присутствуют только в одной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:15:36 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
коды могут не совпадать, т.е. в одной кодов может быть больше, чем в другой. Коды не уникальны, есть уникальный id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:16:45 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenokда, чтобы было понятнее, кодов примерно 100.а, ну тогда терпимо :) Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:17:37 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Проверил, или я чет не понял или #1054 - Unknown column 'sum' in 'field list' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:19:36 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenok, а, оно у вас "count" называется. Ну переделайте запрос, долго, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:30:24 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
А, ток я не понял, что на что переделать, я же пишу не силен в запросах SUM(SUM) на SUM(count)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:31:56 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenok, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:34:05 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Попробовал заменить, все работает на вид как надо, спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:34:54 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Можно только получить небольшой комментарий, а что дает вот это sum(case when t=1 then q else -q end) ? Я все остальное понял, а это так и не догнал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:36:15 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Немного проще: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:39:14 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Работает, и результат тот же, но чуть быстрее и вам спасибо, тут мне вообще весь запрос ясен, хотя сам бы я до него не додумался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:45:38 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Ребят, спасибо за помощь, реально помогли, а то я уже устал сервак перезапускать, чтобы попробовать очередной запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:52:16 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Последний вопрос, а можно ли этот запрос оптимизировать, так как выполняется он почти 2 секунды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 13:54:59 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
не уникальный индекс (код, количество) - занимает много места, таблица дольше обновляется, но запрос считает быстро не уникальный индекс (код) - занимает меньше места, таблица чуть быстрее обновляется, но запрос считает медленнее без индекса - не занимает места под индекс, таблица обновляется быстро , но запрос считает очень долго :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 14:43:58 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Так как все-таки можно повысить производительность именно для вывода данных из таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 14:57:25 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenokТак как все-таки можно повысить производительность именно для вывода данных из таблицы?Покажите план последнего запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:01:00 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenokCygapb-007, Так как все-таки можно повысить производительность именно для вывода данных из таблицы? 13.1.13. CREATE INDEX Syntax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:05:38 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
[/quot]Покажите план последнего запроса.[/quot] Это как сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:06:03 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
И таки да, miksoftПокажите план последнего запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:07:10 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
hitenokПокажите план последнего запроса. Это как сделать?хотя бы подставьте перед запросом слово EXPLAIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:08:05 |
|
||
|
Подсчет разницы между двумя таблицами
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2013, 15:09:12 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38401608&tid=1836024]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 349ms |

| 0 / 0 |
