You have defined many indexes on tables. Have you ever though about how indexing works ?
Simply an index is a temporary table in dbase which keeps a copy of indexed column sorted. When a new row is inserted, dbase puts a new record in temp table at the correct place so an index has the following results:
A) Advantages:
1) Increase in search speed because the table is sorted in a temp table based on indexed field(s)
B) Disadvantages:
1) Slow down (Create, Update, Delete) because same actions should be done on temp tables if needed.
2) DataBase size increases because of using temp tables.
Conclusion:
Indexing is a trade-off of larger db size and slower insertion and fast searching in large amount of data.
Use indexing on fields which you frequently refer to them as the search criteria (WHERE) and remove extra indexes to optimize your db design.