Группировать с сортировкой по миллиону строк - PullRequest
0 голосов
/ 03 мая 2020

У меня есть таблица с миллионами + строк. У каждого из них есть лицензия №.

. У меня есть запрос, который я сейчас делаю, выполняет группировку по номеру лицензии и сортирует по количеству (Distinct (тип)) и количеству (license_no) и дате.

Все поля с объединениями - license_no или date индексируются. Но у меня уходит 5 секунд, чтобы вернуть результаты.

Как мне повысить производительность. В идеале результаты не должны занимать больше секунды. Запрос:

SELECT `license_no`, 
COUNT(DISTINCT(type)) AS gdid, 
COUNT(id) AS cdid,
max(updated_on) as maxdate
FROM `mytable` 
WHERE `license_no` >0 
GROUP BY `license_no`
ORDER BY `gdid` DESC, `cdid` DESC, maxdate DESC LIMIT 12

Logi c Я хочу реализовать:

У меня есть список автомобилей (миллион + записей).

Я хочу найти все уникальные автомобили (уникальные по license_no), отсортированные по:

  • license_no с максимальным количеством различных типов
  • license_no с максимальным общим количеством
  • наконец сортировать отдельные записи по последней дате.

1 Ответ

0 голосов
/ 03 мая 2020

Единственный способ сделать этот бег быстрым - это предварительная агрегация. Вы можете сделать это с помощью триггеров на mytable. Ваши записи будут немного медленнее, но приведенный выше запрос потребует только сканирование таблицы намного меньшего размера.

...