for my report i have to use count queries (name 'user_activity' for example) and then group by by another column (user_type) in another table (user table). 

And its really time consuming when it comes to million records data.
So i decided to use mySql Replicate to create a slave db for my reporting purpose. But im still struggling with these things:

1) Are you willing to duplicate a part of your db in exchange for query speed ?

2) Is there any way to add data to user_type column automatically in 'user_activity' table (slave db) when they are syncing?

3) And how to optimize database for reading purpose? (reporting data, analytics,..)

Thank you!