Из столбцов A, B и C я подсчитываю различные C, где таблица сгруппирована по A, B. Ниже приведен пример таблицы:
и вывод должен выглядеть примерно так:
Я запускаю phpMyAdmin на своем локальном компьютере, используя wamp-сервер для тестирования. Моя база данных имеет 500000 строк. Я использовал следующий запрос, и мой запрос занял более 180 секунд.
select A, B, count(distinct C)
from table
group by A, B
order by count(DISTINCT C) desc
Есть ли оптимальный запрос, который я могу использовать для того же результата, который даст мне меньше времени выполнения? Или это потому, что в моей таблице много данных?
Для повышения производительности вам необходимо добавить составной индекс (A, B, C)
на вашу таблицу.
ALTER TABLE your_table_name
ADD INDEX(A,B,C);
GROUP BY
, и 2. это «покрытие». Тем не менее, сканирование индекса по 500 тыс. Строк не может быть намного быстрее, чем сканирование таблицы с таким же количеством строк.