Ich habe ein Verfahren wie dieses (vereinfacht):
CREATE PROCEDURE test @userName VARCHAR(64)
SELECT *
FROM member M
INNER JOIN order O
ON M.MemberId=O.MemberId
WHERE M.Username = @userName
In der Spalte Benutzername der Mitgliedstabelle befindet sich ein nicht gruppierter Index.
Der Plan-Cache zeigt eine implizite Konvertierung als solche:
Suchschlüssel [1]: Präfix: [MyDatabase]. [Dbo]. [Member] .Username = Skalaroperator (CONVERT_IMPLICIT (varchar (64), [@ Username], 0))
Ich habe mich nur gefragt, was diese implizite Konvertierung verursachen könnte, da sowohl der Parameter als auch der Felddatentyp "UserName" varchar (64) ist.
SP wird aus dem folgenden Framework aufgerufen:
EXEC test @Username=N'webSite.com'
Vielen Dank.
order
ist auch ein Schlüsselwort und somit eine schreckliche Wahl für einen Tabellennamen (und viele würden argumentieren, dass eine Tabelle mit Bestellungen oder Mitgliedern keine einzelnen Namen haben sollte - dies lässt den Eindruck entstehen, dass sie immer nur genau eine Zeile enthalten werden).