Trước tiên, có một lỗi nhỏ trong truy vấn của bạn. Nó phải là:
NOT REGEXP '^[[:digit:]]'
Lưu ý dấu ngoặc kép vuông. Bạn cũng có thể viết lại như sau để tránh khớp với chuỗi trống:
REGEXP '^[^[:digit:]]'
Cũng lưu ý rằng việc sử dụng REGEXP sẽ ngăn không cho sử dụng chỉ mục và quét bảng hoặc quét chỉ mục. Nếu bạn muốn truy vấn hiệu quả hơn, bạn nên cố gắng viết lại truy vấn mà không sử dụng REGEXP nếu có thể:
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action < '0'
UNION ALL
SELECT DISTINCT(action) FROM actions
WHERE qkey = 140 AND action >= ':'
Sau đó thêm chỉ mục trên (qkey, action). Nó không phải là dễ chịu để đọc, nhưng nó sẽ cho hiệu suất tốt hơn. Nếu bạn chỉ có một số lượng nhỏ các hành động cho mỗi qkey thì có lẽ nó sẽ không cung cấp bất kỳ sự gia tăng hiệu suất đáng chú ý nào để bạn có thể gắn bó với truy vấn đơn giản hơn.
Nguồn
2010-04-05 16:43:32
cảm ơn vì điều này! – TwixxyKit