Actually, I was handling data na 3T na ang gamit.
Most of the ideas here can only do so much.
Himo na lang ko checklist bro...
Dili nimo kahinanglan buhaton ang sunod if the earlier suggestion works.
Indexing
- aside from primary keys and foreign keys, fields you constantly search with such as dates, names and affiliations should also be indexed. Be careful with your indexes, you can have one index with one field or more. Depending on the use, knowing the pros and cons of using either, will be to your advantage.
Query Tweaking
Dependent with your search criteria and actual database server. Know your database because almost all of the different servers have different ways of searching data. Since, MySQL ka, with 3T worth of data, hinay na kung complex queries maski monthly queries hinay na. Though muingon sila i-normalize ang table, with each inner join you add to your query exponential ang sacrifice nimo sa performance. So onwards to the last suggestion.
Warehousing
Is a denormalized table holding redundant data, sort of like a sacrifice of space for speed. Here is one way of going at it. Usually, formatted gyud na ang reports, though lahilahi, surely naa gyud nay similarities. Find the common format and fill the table. A data warehouse can be implemented by triggers in MySQL. For every inserted or updated data, the warehouse gets the denormalized form of data. You can also implement it through using a job scheduler system, to denormalize a day's/hour's/minute's worth of data. Querying a single table is undoubtedly fast no matter how many columns it has. Be sure to index the columns you usually search with. Ang problema lang ani... if kulang lang ang needed columns...
Please correct me kung nabali nako ang denormalized (no relationships) and normalized (one to many/many to many relationships)