Various answers to this question.
1. bitcoind does not currently have an address index, but may be getting one "soon". See this
pull request.
2. There are at least a couple patches to bitcoind that add an address index. But then you've gotta build your own bitcoind and keep it maintained over time. fun.
3. There are at least two 3rd party block explorer solutions that build off bitcoind's data without requiring a custom bitcoind. I'm aware of
esplora by Blockstream and
bitcore-node by (cough) Bitpay, which apparently is replacing
Insight.
4. btcd has an address index and an API called searchrawtransactions that is optimized with a
filter to weed out unrelated vin/vout. This is the best combination of privacy and efficiency that I've found, but with a lengthy setup.
5. Various online block explorers offer APIs to search by address. Some even can search multiple addresses at the same time. But of course you lose privacy calling them with your addresses. I've been keeping
a list of some of these.
6. my tool,
bitprices can use btcd locally or any of the explorer APIs, and can also round-robin between them so no single service gets all your wallet addresses. If/when bitcoind offers a suitable index+api I will support it also. There is also a
web frontend.