Ich habe eine Funktion mit CASE WHEN Bedingung in WHERE-Klausel. Einfach (sehr einfach) sieht es wie folgt aus:"CASE WHEN" in WHERE-Klausel mit indizierten Spalten
SELECT *
FROM mytable t
WHERE (
CASE aPARAM WHEN 'a' THEN t.a = aID
WHEN 'b' THEN t.b = aID
WHEN 'c' THEN t.c = aID
ELSE TRUE END
)
aparam und aID - Funktion
paramsein, b und c - indizierte Spalten der Tabelle „mytable "
Aber in diesem Fall verwendet MySQL überhaupt keine Indizes.
Ja, diese Abfrage enthält die Bedingung zum Auswählen einer anderen Bedingung, aber sie hängt nicht vom Ergebniswert ab und kann vor der Ausführung der Abfrage berechnet (definiert) werden.
Was kann sugget für diese Funktion verwenden Indizes verwenden?
Perfekt !!! Ich habe diese Variante benutzt, aber die letzte Bedingung verpasst. Vielen Dank. – Vitaly