если в вашем предложении sql сначала указано имя пользователя = 'username', то, я думаю, вы не получите штраф за производительность в поле пароля.
Я не знаю этого наверняка, ноя знаю, что в языках программирования никто не будет оценивать другие операторы в цепочке AND
, если первый оператор возвращает ложь.
if(iAlwaysReturnFalse() && soIWontGetEvaluated()){
System.out.println("I never get printed out :( ");
}
Однако вы можете легко проверить это предположение.если у вас достаточно большая база данных.просто сделайте несколько тестов.посмотрите, как
SELECT * FROM user WHERE username = '...' and password = '...'
работает против
SELECT * FROM user WHERE password = '....' and username = '...'
и против
SELECT * FROM user WHERE username = '...'