2012-01-17 5 views
1

У меня есть mysql tabel, называемый «пользователями». Есть два очевидных поля: «пользователь» и «проход».Индексирование таблицы MySQL

Мой запрос аутентификации, как это:

"SELECT pass FROM users WHERE user = ? AND pass = ?" 

Я бы учил индексирование может ускорить запрос. Должен ли я индексировать только поле пользователя или поле 'pass'?

Также сравнивает пароли с запросом sql быстрее, чем при сравнении строк PHP.

+1

Сделать поле пользователя уникальным – Stefan

ответ

5

Прежде всего, вы не должны хранить пароли в виде простого текста. Вместо этого храните хэши паролей.

Во-вторых, индекс на user или pass поможет. Но если вы создадите составной индекс на (user, pass), он станет индексом покрытия для этого запроса. Это означает, что запрос может быть подан непосредственно из индекса без консультаций с файлами данных.

+0

Спасибо, @Mchl, я пропустил это :-) –

+0

Я не храню пароли в текстовом виде. Это было бы просто глупо. :) Так что основной составной индекс лучше всего использовать? – rasmusx

+0

@rasmusx: да, я так думаю. –