Как сгруппировать и посчитать по двум столбцам оптимально? - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу сделать подсчет данных в большой таблице, которая имеет два столбца с одинаковыми значениями.Но наилучшим из возможных способов

У меня есть таблица ассоциации продуктов, и я хочу подсчитать, сколько раз продукты были связаны с другими, я хочу знать, какие из них были наиболее связаны, однако моя таблица слишком велика,Интересно, есть ли оптимизированное решение для этой

МОЕЙ ТАБЛИЦЫ:

mysql> SELECT * FROM user_association_data_2019_02;
+----+------------+-------------+---------------------+---------+
| id | product_id | association | last_modified       | user_id |
+----+------------+-------------+---------------------+---------+
|  6 |       1096 | 1355        | 2019-02-04 11:42:07 |    2940 |
| 17 |       1096 | 1758        | 2019-02-04 11:54:10 |    2940 |
| 19 |       1355 | 1758        | 2019-02-04 11:54:15 |    2940 |
| 24 |       1096 | 1758        | 2019-02-04 11:55:31 |    2940 |
| 37 |       1355 | 1758        | 2019-02-04 11:58:54 |    2940 |
| 53 |       1096 | 463         | 2019-02-04 16:38:49 |    2940 |
| 56 |       1758 | 560         | 2019-02-05 10:11:43 |    2940 |
| 57 |       1096 | 560         | 2019-02-05 10:11:45 |    2940 |
| 65 |       1096 | 560         | 2019-02-05 11:10:13 |    2940 |
| 70 |       1758 | 560         | 2019-02-05 12:11:50 |    2940 |
| 74 |       1758 | 560         | 2019-02-05 12:13:27 |    2940 |
| 75 |       1207 | 560         | 2019-02-05 12:13:30 |    2940 |
| 77 |       1096 | 560         | 2019-02-05 12:14:17 |    2940 |
| 79 |       1207 | 1355        | 2019-02-05 14:04:17 |    2940 |
| 81 |       1355 | 560         | 2019-02-06 14:17:25 |    2940 |
| 82 |       1096 | 560         | 2019-02-06 14:17:26 |    2940 |

Это решит мой счет

mysql> SELECT product_id, association, count(*) as total FROM user_association_data_2019_02 GROUP BY product_id, association;
+------------+-------------+-------+
| product_id | association | total |
+------------+-------------+-------+
|       1096 | 1355        |     1 |
|       1096 | 1758        |     2 |
|       1096 | 463         |     1 |
|       1096 | 560         |     4 |
|       1207 | 1355        |     1 |
|       1207 | 560         |     1 |
|       1355 | 1758        |     2 |
|       1355 | 560         |     1 |
|       1758 | 560         |     3 |
+------------+-------------+-------+

Но я не думаю, что это оптимизировано,как оптимизировать этот счет?

1 Ответ

0 голосов
/ 07 февраля 2019

Вероятно, нет другого способа переписать ваш запрос.Но вы можете улучшить производительность, добавив индексы:

ALTER TABLE t ADD INDEX ix_productid_association (product_id, association);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...