Splitting a table up because there are too many records is always a bad idea.
The speed does not com from the number of records in the table, but from the number of records that your query has to process.,
80k rows in one table or 10k rows in 8 tables, you still have still 80k rows to process, so you're just making things difficult.
(yes you could split it up A-M and M-Z, but you could just as easily do that in a new column)
Be very carefull with indexes on varchar-columns, in order to be usefull the index must contain all the chars from the column and that means the index will be the same size as the column itself.
64MB is way too little memory, 80k rows, ten columns, 50 chars each, that's 800001050= 40 megabytes,.
Your OS probably takes 40-50MB to run, so the database cannot even keep 1/4 of the database in memory, so it must read the entire table from disk every time.
PS, 90% CPU is quite normal. If you are the only one using the machine, then you will be able to use all of the CPU.