Jak je obvyklé u SQL, dotaz je do značné míry irelevantní, aniž byste věděli, proti kterému je skutečné schéma použito.
Máte index na Members.Phone? Pokud ne, pak nezáleží na tom, jak napíšete dotaz, všichni prohledají celou tabulku a provedou to samé (tj. povedou špatně). Pokud máte index pak způsob, jakým napíšete dotaz, je zásadní:
SELECT * FROM Members WHERE Phone= @Phone;
SELECT * FROM Members WHERE Phone= dbo.FormatPhone(@Phone);
SELECT * FROM Members WHERE dbo.FormatPhone(Phone)[email protected];
První dotaz je zaručeně optimální, vyhledá telefon na indexu.
Druhý dotaz závisí na vlastnostech dbo.FormatPhone. Může nebo nemusí používat optimální hledání.
Poslední dotaz je zaručeně špatný. Prohledá tabulku.
Také jsem odstranil nápovědu NOLOCK, zdá se, že je to téma dne... Viz syntaxe pro nolock v sql . NOLOCK je vždy špatná odpověď. Použijte izolaci snímku.