Frage

Ich weiß, dass dies eine ziemlich grundlegende Frage ist, und I denken Ich kenne die Antwort ... aber ich würde bestätigen möchte.

Sind diese Abfragen wirklich gleichwertig?

SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'

Vielleicht ist es eine Performance-Overhead wie ohne Wildcards in Verwendung?

Ich habe eine Anwendung, die LIKE & Wild Cards verwendet optional. Die SP hat zur Zeit dergleichen, und fügt die Wildcards -. Ich denke da an nur die Abfrage zu aktualisieren, wie zu verwenden, aber haben die App, die Wildcards anhängen nach Bedarf

War es hilfreich?

Lösung

Wie @ocdecio sagt, wenn der Optimierer ist intelligent genug, es sollte kein Unterschied sein, aber wenn Sie sicherstellen möchten, was hinter den Kulissen geschieht, sollten Sie die zwei Abfrage-Ausführungspläne vergleichen.

Andere Tipps

Original Antwort von Matt Whitfield von hier

Es gibt einen Unterschied zwischen = und LIKE. Wenn Sie String-Vergleiche unter Verwendung LIKE ausführen, werden alle Zeichen in der Musterkette sind signifikant. Dazu gehören führende oder nachgestellte Leerzeichen.

Wenn Sie also eine Spalte haben, die char oder nchar und nicht nvarchar oder varchar, gibt es unterschiedliche Ergebnisse werden aufgrund nachstehende Leerzeichen.

Kleines Beispiel dieses Verhalten zu reproduzieren:

CREATE TABLE #temp (nam [varchar](MAX))
INSERT INTO [#temp] ([nam])
VALUES ('hello')
INSERT INTO [#temp] ([nam])
VALUES ('hello  ')

SELECT * FROM #temp WHERE [nam] = 'hello  '

SELECT * FROM #temp WHERE [nam] LIKE 'hello  '

Jeder gute Optimierer den ersten Ausdruck auf den zweiten reduzieren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top