Don't create indices for the databases #69
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Indices are really helpful on databases that hold many thousands of rows and are searched frequently. On the other hand, indices are harmful on tables which are frequently written to because not only the actual entry needs to be updated but also the index.
So especially in the particular case of the attributes tables, the index is of more harm than use because we write updates all the time and never read it. Removing the index on the attributes table reduces the disk io footprint of the zigbee db by 30%.
As the other tables are mostly sitting still all the time, the index doesn't really do much harm either in terms of disk io, but it increases the database size, while not providing much benefit, as those entries are also only read once at startup and the tables are reasonably small (a few hundreds).