Сначала в вашем запросе есть небольшая ошибка. Должно быть:
NOT REGEXP '^[[:digit:]]'
Обратите внимание на двойные квадратные скобки. Вы также можете переписать его следующим образом, чтобы избежать совпадения с пустой строкой:
REGEXP '^[^[:digit:]]'
Также обратите внимание, что использование REGEXP предотвращает использование индекса и приведет к сканированию таблицы или сканированию индекса. Если вы хотите более эффективный запрос, попробуйте переписать запрос, не используя REGEXP, если это возможно:
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action < '0'
UNION ALL
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action >= ':'
Затем добавьте индекс (qkey, action). Это не так приятно читать, но оно должно дать лучшую производительность. Если у вас есть только небольшое количество действий для каждого qkey, то это, вероятно, не даст заметного увеличения производительности, поэтому вы можете придерживаться более простого запроса.