Sorry for all the tangential things like normalization and use of indexes.
I've gone back to your database to see where you have a summation. I didn't see one.
Still unclear with exactly what you are trying to do.
Perhaps you could tell us more about the summation. And show us the real query with the summation.
As I said the keyword approach may not be applicable
The keyword approach, if applicable to your situation, changes a sequential read against ~419000 records, to an indexed search of ~3000 records.
but if it is, it may get you some speed.
After looking at all of your queries, I'll offer code for 2 guesses
Group and Count for "*james*"
Code:
SELECT Table1.ContactName, Count(Table1.ContactName) AS CountOfContactName
FROM Table1
GROUP BY Table1.ContactName
HAVING (((Table1.ContactName) Like "*james*"));
Dcount without Grouping
Code:
?Dcount("contactname","table1","Contactname Like '*James*'")
5159
Good luck with your project.