Как обычно в SQL, запрос в значительной степени не имеет значения, не зная, против какой фактической схемы используется.
У вас есть индекс на Members.Phone? Если нет, то не имеет значения, как вы пишете запрос, они все будут сканировать всю таблицу и выполнять то же самое (т.е. плохо работать). Если у вас есть индекс , то при написании запроса все будет иметь значение:
SELECT * FROM Members WHERE Phone= @Phone;
SELECT * FROM Members WHERE Phone= dbo.FormatPhone(@Phone);
SELECT * FROM Members WHERE dbo.FormatPhone(Phone)=@Phone;
Первый запрос гарантированно оптимален, будет искать телефон по индексу.
Второй запрос зависит от характеристик dbo.FormatPhone. Он может использовать или не использовать оптимальный поиск.
Последний запрос гарантированно будет плохим. Буду сканировать таблицу.
Кроме того, я удалил подсказку NOLOCK, похоже, это была тема дня ... См. синтаксис для nolock в sql . NOLOCK всегда неправильный ответ. Использовать изоляцию моментального снимка.