Possible to improve performance by sharding group DBs?

I think its well known that people find header ingestion performance on big groups to be problematic (though one can correct me if I'm wrong, and thereby discount this entire thread)
If it is the case, I wonder if we could improve performance by sharding the DBs over time (where time might not just be a physical time, but relative to # of headers)
this would limit the size of the sqlite DBs and thereby the size of the btrees reducing IO when inserting headers.
Now I imagine a major problem with this. What happens when files or file sets are split across these sharded DBs. while its possible for the UI to have a complex logic to try and handle it, I think there's an easier solution. overlapping shards.
i.e. if when we reach the point to create a new shard, we dont' stop inserting into the old DB for a period of time. In this way, a certain amount of records will be injected into both the previously "active" shard and the newly created shard, presumambly if we overlap a sufficient amount, one of the DBs should have a complete record of the file set (or possibly both)
if the records have a common id between them, it should be easy for the UI to filter out appropriately the duplicate records (i.e. either the older DB will have the complete set, the newer db will have the complete set or both, we just display only one of the common id of which is "better"), which doesn't seem to be as complex an operation as trying to merge records between shards.
this is just a thought of throwing a bit more disk space at the problem to try and improve performance.
If it is the case, I wonder if we could improve performance by sharding the DBs over time (where time might not just be a physical time, but relative to # of headers)
this would limit the size of the sqlite DBs and thereby the size of the btrees reducing IO when inserting headers.
Now I imagine a major problem with this. What happens when files or file sets are split across these sharded DBs. while its possible for the UI to have a complex logic to try and handle it, I think there's an easier solution. overlapping shards.
i.e. if when we reach the point to create a new shard, we dont' stop inserting into the old DB for a period of time. In this way, a certain amount of records will be injected into both the previously "active" shard and the newly created shard, presumambly if we overlap a sufficient amount, one of the DBs should have a complete record of the file set (or possibly both)
if the records have a common id between them, it should be easy for the UI to filter out appropriately the duplicate records (i.e. either the older DB will have the complete set, the newer db will have the complete set or both, we just display only one of the common id of which is "better"), which doesn't seem to be as complex an operation as trying to merge records between shards.
this is just a thought of throwing a bit more disk space at the problem to try and improve performance.