[eluser]CroNiX[/eluser]
I'd read up on some articles about mysql indexing. It is something that can tremendously speed up queries as your tables grow large and is often the most overlooked feature of database design.
Generally, you want to index columns that you:
ORDER BY (ORDER BY first_name) (first_name should be indexed)
JOIN ON (JOIN assignments ON assignments.user_id = employees.id) (assignments.user_id should be indexed. employees.id is probably already a primary key and so it's already indexed, but if not it should be)
GROUP BY (GROUP BY first_name) (first_name should be indexed)
use in a WHERE (WHERE first_name = 'someone') (first_name should be indexed)
If you don't use indexes, mysql has to scan ALL rows that you are querying on. With indexes, it knows "where" to look.
Think about how long it would take you to manually search a phone book for a specific phone number vs. searching for someones name (which are in alphabetical order so you know where to start looking). That's the difference between non-indexed and indexed.