Ich habe diese sql
query:sql: Abfrage mit vielen Bedingungen optimieren
SELECT
[Id],
[Content]
FROM
[MyTable] with (nolock)
where
Content is not null
and (PATINDEX('%"number" : "[0-9]%', Content) > 0
or PATINDEX('%"number":"[0-9]%', Content) > 0
or PATINDEX('%"number" :"[0-9]%', Content) > 0
or PATINDEX('%"number": "[0-9]%', Content) > 0
--del
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
or PATINDEX('%"del":"[0-9]%', Content) > 0
)
Auf meinem Server mit Caches gelöscht, dauert es länger als zwei Minuten um 400 Zeilen zurückgeben, vielleicht, weil ich habe eine Menge Bedingungen mit or
.
Ich habe die Abfrage auf diese Weise wegen der Möglichkeiten der "Nummer" Zeichenfolge in der Content
Spalte mit einem Leerzeichen oder nicht zwischen ":" und "Anzahl" Zeichenfolge oder die nächste Ziffer erstellt.
Gibt es eine Möglichkeit, von den or
Bedingungen zu reduzieren?
'REPLACE (‘ ' '') 'Leerraum entfernen kann dann eine einzelne' PATINDEX (' % "number": "[0 -9]% ''? –
Hört sich an, als hätten Sie eine miese Datenstruktur. Vielleicht möchten Sie die Daten reparieren. –
Es ist mir nicht erlaubt, ein Leerzeichen mit einer leeren Zeichenfolge zu ändern. Diese Daten stammen von den Clients, die eine API integriert haben kann das json so senden, wie es will, solange es gültig ist –