You are assuming things are stored in the query table, additional field, the full IPv4 or IPv6 address, I assume a lot of database designers would agree this isn't a pretty design.
You could very easely create a new database table, holding all IP addresses of the machine it is running on (less than 10 on an average macihine), than in the query table, use the ID of the IP in the new table, as a reference.
I'm don't know where you get the information on the number of queries an average pihole receives per day, however, the number of queries my pihole processes per day is significattly lower.
going with your figures, excluding the space for the smal extra table for the IP's and their ID's
365 * 50000 * 1 bytes=18 MB (not 273MB)
365 * 200000 * 1 bytes=70 MB (not 6GB)
I use 32GB SD cards, 3,7 GB used (14%). The additional, worst case 70 MB will not cause any problem.
edit
pihole, with MAXDBDAYS=365 (default) with that amount of queries per day, expierence troubles when searching the long term query data. The 365 days default is not a very good choice for a busy pihole, example here (not the only example). Question: anybody checking for a DNS query, dated 27/10/2020, given today is 26/10/2021?
/edit