If there is a problem then it will be startup speed & memory. Calibre reads the DB into memory when it starts. The bigger the DB the more time this takes and the more memory is required.
I use the word "tags" here. Custom tags-like columns are the same.
Tags are linked to books using bog-standard N-M relational links. By that I mean the structure "books <- tag_links -> tags". Given a book (book id) it is one (indexed) query to find all the tag ids referenced by that book. From there it is a simple (indexed) query to get the tag values. Given a tag id it is one (indexed) query to find the book ids that reference that tag.
Given the above, I don't see significant problems with having lots of tags referenced by single books, where any given book references a reasonable number of such tags (say, less than 100). Where I would expect problems is if books each reference hundreds of thousands of tags, unique or not. This problematic case requires walking those tags for each book to display the data.
Bottom line: if you have lots of memory then I doubt you will notice anything. If you don't then you might get into memory swapping/paging, which will dramatically slow things down.
Last edited by chaley; 09-20-2022 at 11:45 AM.
Reason: Fixed linking text
|