While I agree with RedFilter that there is nothing wrong with storing historical data, I do not agree with the performance improvements you will receive. Your database is not what I would consider as a database with heavy use.
One of the main advantages of databases is indexes. They used advanced data structures for quick access to data. Think each primary key has an index. You should not be afraid of them. Of course, it would probably be counterproductive to do all your field indexes, but this should never be necessary. I would suggest exploring the indices more to find the right balance.
As for the work done during the change, this is not so bad. An index is a tree similar to the representation of your field data. This is done to reduce the search to a small number of close binary solutions.
For example, think about finding a number from 1 to 100. Usually you randomly put on numbers, or you just started with 1 and counted. It is slow. Instead, it would be much faster if you set it up so that you can ask if you were higher or lower when you select a number. Then you will start at 50 and ask if you are finished or not. Under, then select 75 and so on until you find the number. Instead of possibly going through 100 numbers, you will only need to go through 6 numbers to find the right one.
The problem is when you add 50 numbers and do it from 1 to 150. If you start again with 50, your search will be less optimized since you will have 100 numbers. Your binary search is not balanced. So what you are doing is rebalancing your search, starting from the middle again, namely 75.
Thus, working with a database is just an adjustment to balance the middle of your index. Actually this is not a lot of work. If you work with a large large database and require a lot of changes per second, you will definitely need a strong strategy for your indexes. In a small database that receives very few changes like yours, this is not a problem.
Jordan
source share