@MFriqk

Как ускорить поиск пароля в базе данных MySQL?

У меня есть таблица в которой больше 100.000.000 данных. И есть индексы. Так вот если искать по индексу то поиск быстрый, всего за ~0.5 секунд находит, а как быть, если искать не известные данные? В моём случае это проверка пароля с определённым хешом (sha256). К примеру вот мой запрос
SELECT * FROM `table` WHERE SHA2(CONCAT(`password`, 'sail'), 256) IN ('113b504a25551317e26fa6e5551d9aa5ad60097c1c58c4210e2aa6898676307d');

Он преобразует пароль из бд и соль в sha256 и сверяет. Можно ли как то это ускорить? Ибо запрос идёт больше 20 минут
А если выполнить
SELECT IF (
	'113b504a25551317e26fa6e5551d9aa5ad60097c1c58c4210e2aa6898676307d' = 
	SHA2(`password`+"sail",256), '1', '0') AS "TEST"
	FROM table;

, то запрос выполняется за ~0.4 сек, Но это не то, что нужно :(
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 3
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
В базе данных не должно быть пароля в открытом виде - только хэш. Иначе взломщик, получивший дамп базы данных, сможет авторизоваться от имени любого пользователя.
И хэш должен быть не SHA, а специально предназначенный для паролей.

И, да - Dr. Bacon прав: пользователь выбирается из базы по логину, а пароль проверяет не база данных, а серверный код.
Ответ написан
@bacon
Зачем искать по паролю? Надо искать по логину и у этой записи уже чекать пароль.
Ответ написан
@MFriqk Автор вопроса
У меня просто база для расшифровки пароля. А не просто база с пользователями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы