Запрос на возврат нескольких групп по наборам в MYSQL? - PullRequest
0 голосов
/ 04 августа 2020

У нас есть таблица с сотнями миллионов строк, и мы хотим запросить некоторую группу по подсчетам на некотором ее подмножестве. В настоящее время мы выполняем несколько запросов, по одному для каждой группы, но похоже, что это, вероятно, приведет к многократному сканированию данных. Например, допустим, у вас есть таблица People со столбцами: FirstName LastName Age State Country ZipCode

И вы хотите выполнить следующие запросы:

SELECT State, COUNT(*) AS cnt
FROM People
WHERE -- complicated where clause --
GROUP BY State;

SELECT Country, COUNT(*) AS cnt
FROM People
WHERE -- complicated where clause --
GROUP BY Country;

SELECT Country, AVG(Age) AS avg_age
FROM People
WHERE -- complicated where clause --
GROUP BY Country;

Проблема в том, что это будет приводят к необходимости сканировать данные несколько раз. Есть ли способ отсканировать данные один раз, рассчитать несколько сводных таблиц? Каждый из этих запросов занимает около секунды или двух, и кажется, что было бы более эффективно, если бы данные можно было обработать один раз и вернуть несколько наборов результатов.

Возможно ли это даже с MYSQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...