Unterschied zwischen Int und Varchar (SQL server) in Where-Klausel?

Was ist der Unterschied zwischen AID = 10 oder AID = '10' wenn AID ein INT Typ in SQL server ist?

 Select * from ATable where AID = '10' 

und

 Select * from ATable where AID = 10 

Der Unterschied ist, dass SQL muss Umwandlung zu tun, um die varchar Konstante mit dem Typ Ihrer Spalte vergleichen.

Wenn Sie den Ausführungsplan für die erste Abfrage anzeigen, sehen Sie so etwas wie:

 CONVERT_IMPLICIT(int, [@1], 0) 

Bearbeiten

Im obigen Fall wird die Umwandlung einer Konstanten nur eine geringe performanceseinschränkung haben. Wenn jedoch die Umwandlung stattdessen auf der Spalte erfolgt (und nicht die Konstante), kann dies zu Scans führen, die schwerwiegende Konsequenzen haben können.

Wie pro Remus Antwort, können Sie die Reihenfolge der Vorrang der Umwandlung hier überprüfen