У меня есть таблица mySQL, где каждая запись представляет производительность игрока в конкретной покерной руке. Важными столбцами являются игрок и сеть. Я хочу создать страницу «рекордов», в которой будут показаны лучшие игроки, основанные на общем выигрыше, с возможностью фильтрации на основе типа игры, времени и т. Д. Я дружнее это с помощью следующего запроса:Ускорить запрос ранжирования
SELECT player,sum(net) AS profit FROM hands GROUP BY player ORDER BY profit DESC
К сожалению, у меня есть много записей, более 2 миллионов даты, и этот запрос является чрезвычайно медленным. Я поместил индекс на «плеер», но время выполнения все равно 7 секунд. Есть ли надежда на ускорение mySQL или мне нужно строить эту страницу по-другому? Если последнее, любые предложения?
Вам нужно отобразить всех игроков? Попробуйте добавить предложение LIMIT. – NewInTheBusiness
Нет, но ограничение вообще не влияет на производительность. – Abovestand
В противном случае я бы предложил таблицу с предварительным агрегатом, но поскольку вы рассматриваете квалификацию, основанную на типах игр, временных диапазонах, которые выходили бы из окна, если бы не было более постоянной основы критериев запросов. – DRapp