select count('syslogD.syslogD_key') from syslogD;
The stuff in the () is irrelevant. Suggest this instead:
select count(*) from syslogD;
If it is MyISQM, the COUNT(*) will be very fast. If it is InnoDB, it will be slower -- it has to traverse some index.
FULLTEXT seems irrelevant.
select syslogD.sev, syslogD.msgNum, count('syslogD.sev'),
syslogD.message
from syslogD
where day='26'
group by msgNum;
is better written as
select s.sev, s.msgNum, count(*),
s.message
from syslogD AS s
where day=26 -- assuming 'day' is numeric, not a string
group by msgNum; -- this is suspect
Why are you grouping by one thing, but have 3 non-aggregrates in the SELECT? This is usually a mistake. Also, if msgNum is unique, the GROUP BY does nothing and the COUNT(*) will always be 1. Assuming the above is correct, then this might be optimal:
INDEX (day, msgNum)
Perhaps you wanted:
select s.sev, s.msgNum, count(*),
s.message
from syslogD AS s
where day=26
group by s.sev, s.msgNum, s.message;
order by s.sev, s.msgNum, s.message;
The index you need should start with 'day', and should (in this case) continue with the group by fields (in the same order):
INDEX (day, sev, msgNum, message)
To assist in analyzing slow SELECTs, please provide
* SHOW CREATE TABLE tbl\G
* SHOW TABLE STATUS LIKE 'tbl'\G
* EXPLAIN SELECT ...\G
and surround them with [ code ] and [ / code ]