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!