Mehrere Spalten mit einem Schlüssel, anhand von gleichnamigen Spalten filtern

Werbung:
Das zu vergleichen kann durchaus aufwendig und komplex werden, aber vermutlich gut investierte Zeit.

Du kannst noch eine XML Variante bauen :)
 
Hallöchen, schon wieder ich.
die SQL abfragen die ich mir zusammenbastle sehen nun wie folgt aus.

SELECT TOP(2147483647) * from Token
WHERE (( JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Sofort'
OR JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Per Mail'
OR JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Zulage' ))


leider kenne ich mich mit Optimisierung der MSSQL Datenbank nicht aus und weis leider nich wie ich soetwas selber nachschauen kann.

In diesem Beispiel wird ja JSON_Value benutzt und das 3x auf den selben Pfad.
Wird vom SQLServer selbst eine Optimisierung durchgefphrt sodass er den pfad nur 1 mal auswertet oder müsste ich das irgendwie selbst lösen?

Vielen Dank
Flo
 
Ich habe gerade herausgefunden das mit dem Ausführungsplan nachvollziehbar ist, das gleiche "JSON_Value" Funktionen gleich genannt werden. Das bedeutet das ich keine optimierung machen muss, sondern MSSQLServer dies für mich übernimmt?

Expr1002 ist in dem fall immer das selbe -> JSON_VALUE(currentMetadata, '$.username.data')


1687802654889.png
 
WHERE (( JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Sofort'
OR JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Per Mail'
OR JSON_VALUE(currentMetadata, '$.Prioritaet.data') = 'Zulage' ))
Kenne mich mit SqlServer nicht aus, aber geht kein IN? Also etwas in der Form
WHERE JSON_VALUE(currentMetadata, '$.Prioritaet.data') IN ('Sofort','Per Mail', 'Zulage')
 
Werbung:
In würde gehen aber die abfragen können sehr groß werden, vorallem aber auch mit unterschiedlichen Ebenen da geht IN nicht mehr
 
Zurück
Oben