У нас есть таблица с сотнями миллионов строк, и мы хотим запросить некоторую группу по подсчетам на некотором ее подмножестве. В настоящее время мы выполняем несколько запросов, по одному для каждой группы, но похоже, что это, вероятно, приведет к многократному сканированию данных. Например, допустим, у вас есть таблица 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?