What's wrong with option 2? This seems very effective, more than enough performant for 99% of use cases, and it seems the most straightforward to me.
1. You have given up on any sort of consistency. 2. The database implementation will never be able to optimize a lookup workload which is pretty close to pessimal. Not caring about 99% is only viable if can actually avoid the other 1%.
I feel like this entire discussion, and the linked article, are overflowing with answers to your question.