Since you are dealing with MyISAM, I have a small suggestion.
If you can collect the rows in a separate table that does not have a FULLTEXT index. You can bulk load them into the table that has the fulltext index.
For example: For a MyISAM table mydb.datafulltxt, try the following
Step 01) CREATE TABLE mydb.dataonly LIKE mydb.datafulltxt;
Step 02) Drop the FULLTEXT index out of mydb.dataonly
Step 03) Do many INSERTs into mydb.dataonly
Step 04) Run this sequence of commands every hour to load them into mydb.datafulltxt
ALTER TABLE mydb.datafulltxt DISABLE KEYS;
INSERT INTO mydb.datafulltxt SELECT * FROM mydb.dataonly;
ALTER TABLE mydb.datafulltxt ENABLE KEYS;
CREATE TABLE mydb.dataonlynew LIKE mydb.dataonly;
ALTER TABLE mydb.dataonly RENAME mydb.dataonlyold;
ALTER TABLE mydb.dataonlynew RENAME mydb.dataonly;
DROP TABLE mydb.dataonlyold;
Step 05) Repeat from Step 03
Hopefully, bulk loading may help if your app is designed to do it and you can tolerate it
INSERTspecifics, other indexes and triggers on that table. Three seconds seem very much for any type of index. – dezso Oct 17 '12 at 7:33