Khả năng xử lý văn bản của MySQL không đủ tốt cho những gì bạn muốn. Một chức năng được lưu trữ là một tùy chọn, nhưng có thể sẽ chậm. Đặt cược tốt nhất của bạn để xử lý dữ liệu trong MySQL là thêm chức năng do người dùng xác định . Nếu bạn vẫn định xây dựng phiên bản MySQL mới hơn, bạn cũng có thể thêm chức năng gốc .
Cách "đúng" là xử lý dữ liệu bên ngoài DB vì DB là để lưu trữ chứ không phải để xử lý và bất kỳ quá trình xử lý nặng nào có thể gây quá nhiều tải cho DBMS. Ngoài ra, tính toán số lượng từ bên ngoài MySQL giúp thay đổi định nghĩa về những gì được tính là một từ dễ dàng hơn. Làm thế nào về việc lưu trữ số lượng từ trong DB và cập nhật nó khi tài liệu được thay đổi?
Ví dụ về hàm được lưu trữ:
DELIMITER $$
CREATE FUNCTION wordcount(str LONGTEXT)
RETURNS INT
DETERMINISTIC
SQL SECURITY INVOKER
NO SQL
BEGIN
DECLARE wordCnt, idx, maxIdx INT DEFAULT 0;
DECLARE currChar, prevChar BOOL DEFAULT 0;
SET maxIdx=char_length(str);
SET idx = 1;
WHILE idx <= maxIdx DO
SET currChar=SUBSTRING(str, idx, 1) RLIKE '[[:alnum:]]';
IF NOT prevChar AND currChar THEN
SET wordCnt=wordCnt+1;
END IF;
SET prevChar=currChar;
SET idx=idx+1;
END WHILE;
RETURN wordCnt;
END
$$
DELIMITER ;