afaik enabling txindex=1 in bitcoind takes a few hours, but not days like downloading the whole blockchain does.
the merkleroot (and basicly almost everything in the bitcoin protocol and bitcoind) is made to be fast / good at verifying and finding data of which you already know something (ie. getting a transaction by hash, getting the balance of your already 'imported' addresses etc).
a blockexplorer (such as
www.blocktrail.com which I'm the CTO of) can't work using bitcoind directly, it just doesn't provide what you need.
I think most blockexplorers use a relational (or graph or nosql) database that allows them to look up data in a (way) more flexible manner.
https://github.com/bitpay/insight is the only one that I know of that follows a schema more similar to bitcoind, using leveldb and basicly only storing data in a way that they need it directly.
which is a pretty neat project for small usage, but it doesn't scale very well and you won't be able to get any data out of it that it's not already designed for (so it's hard to query for statistics etc).