Zuerst gibt es einen leichten Fehler in Ihrer Abfrage. Es sollte sein:
NOT REGEXP '^[[:digit:]]'
Beachten Sie die doppelten eckigen Klammern. Sie könnten umschreiben es auch als auch nach der leeren String-Matching zu vermeiden:
REGEXP '^[^[:digit:]]'
Beachten Sie auch, dass die Verwendung von REGEXP aus einem Index benutzt werden, und wird in einem Table-Scan oder Index-Scan zur Folge hat. Wenn Sie eine effizientere Abfrage möchten, sollten Sie versuchen, die Abfrage neu zu schreiben, ohne REGEXP zu verwenden, wenn es möglich ist:
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action < '0'
UNION ALL
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action >= ':'
Dann einen Index auf (Taste q, action) hinzuzufügen. Es ist nicht so angenehm zu lesen, aber es sollte eine bessere Leistung geben. Wenn Sie nur eine kleine Anzahl von Aktionen für jeden qkey haben, wird es wahrscheinlich keine merkliche Leistungssteigerung geben, so dass Sie bei der einfacheren Abfrage bleiben können.
danke dafür! – TwixxyKit