Primero hay un ligero error en su consulta. Debe ser:
NOT REGEXP '^[[:digit:]]'
Tenga en cuenta el doble paréntesis cuadrado. También podría volver a escribir como la siguiente para evitar también coincidente con la cadena vacía:
REGEXP '^[^[:digit:]]'
También tenga en cuenta que el uso de REGEXP impide un índice que se utilice y se traducirá en un recorrido de tabla o índice de exploración. Si desea una consulta más eficiente que debe tratar de reescribir la consulta sin utilizar REGEXP si es posible:
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action < '0'
UNION ALL
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action >= ':'
A continuación, agregue un índice en (QKey, acción). No es tan agradable de leer, pero debería ofrecer un mejor rendimiento. Si solo tiene un pequeño número de acciones para cada qkey, probablemente no le otorgue ningún aumento de rendimiento notable para que pueda seguir con la consulta más simple.
gracias por esto! – TwixxyKit