Most efficient way to set up a database handling millions of links?
(Not an answer, but some pitfalls that make it difficult to design this for efficiency.)


More than half the users will have only one link.
Some users will each have over 100K links.
More than half the sites will have only one page.
Some sites will each have over 100K pages.


What does it mean?  It means that any form of indexing, compression, etc, needs to be flexible enough to handle such extremes.

(I experimented with a similar experiment, quitting after a million or so links.  Those are extrapolations of what I encountered.)