In my experience, most big data systems have historical tables. In most cases, what I was, and current data and historical data have different user groups. Current data is used by end users to work with clients with their current or recent transactions. Historical data is usually used by groups of users who do not need to talk directly with clients / clients.
Do not worry about the issue of implementation and maintenance, as I think that your main focus is on performance. Implementation is only a one-time transaction that will work at a certain frequency (for example, weekly, monthly or annually) after you transfer the program / s to production. The service is very small and you can just forget about it as soon as it is already implemented. You just need to make sure that you thoroughly test the programs.
For normalized historical tables, tables have the same structure and field names, which greatly simplifies data copying. Thus, you can simply connect the table between the tables.
If you decide not to split the data, you will continue to add the index after the index. But somewhere along the way, you will still encounter the same problem again.
source share