Если я не ошибаюсь, если в таблице users
поле username
является первичным ключом, в этом поле будет индекс (кластеризованный или нет), поэтому запрос выполняется по полям username
и * 1004.* потратит впустую преимущество индекса и сделает сканирование таблицы;ITOH, запрашивающий только по индексу username
, выполнит поиск по индексу, гораздо быстрее.
Конечно, вы можете также создать другой индекс в (username, password)
, но это не обязательно, и, ИМХО, это пустая трата, так как этоиспользовать только в аутентификации.
Так что, если я прав, я не хочу противоречить всем, но для меня самый оптимизированный способ - это вариант 2.
И, как говорили люди,пожалуйста, не храните пароли в виде простого текста, используйте алгоритм хеширования и сохраняйте хеш, а не пароль.
PD .: Извините за моих бедных англичан.
РЕДАКТИРОВАТЬ: Я не очень хорошо разбираюсь во внутренностях СУБД, поэтому, если я ошибаюсь относительно важности полей запроса для использования индекса или нет, пожалуйста, исправьте меня.