Эффективный расчет частоты хэшей паролей в MySQL

0

Для моего бакалавриата я должен проанализировать утечку паролей, и у меня есть таблица с 2-мя колонами MEMBER_EMAIL и MEMBER_HASH

Я хочу рассчитать частоту каждого хеша эффективно

Чтобы результат выглядел так:

Hash    | Amount
----------------
2e3f..  | 345
2f2e..  | 288
b2be..  | 189

Мой запрос до сих пор был прямолинейным:

SELECT MEMBER_HASH AS hashed, count(*) AS amount 
FROM thesis.fulllist 
GROUP BY hashed 
ORDER BY amount DESC

Хотя он отлично работает для небольших таблиц, у меня проблемы с вычислением запроса во всем списке (112 млн. Записей), где мне требуется более 2 дней, что заканчивается ошибкой таймаута соединения, даже если мои настройки в этом отношении прекрасны.

Поэтому я задаюсь вопросом, есть ли лучший способ рассчитать (как я не могу думать об этом), был бы признателен за любую помощь!

Теги:
frequency
count
hash
group-by

1 ответ

1
Лучший ответ

Ваш запрос не может быть оптимизирован, так как он довольно прост. Единственный способ улучшить способ выполнения запроса - проиндексировать "MEMBER_HASH".

Так вы можете это сделать:

ALTER TABLE 'table' ADD INDEX 'hashed' ('MEMBER_HASH');
  • 0
    Так и думал! Я попробую (как-то еще не проиндексировано), сообщу! Пока спасибо.
  • 0
    Похоже, это работает отлично! Теперь мне просто нужно 30 минут вместо 2 дней, большое спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню