Each site is different. Some selects may be really quick to do, while others (say against millions of entries), could take forever. It all depends on the site, your hardware config, and especially the data you are trying to get... have you looked to see where your bottleneck is? Is it on the database or on the webserver? Largely, this depends on what you're selecting. While your question is rather vague, here are a few things that you may want to look into:
- Cache your entries in perl, and use them elsewhere. You might be able to shave some cycles off by throwing your results into a hashref and keeping them around a little longer.
- Check the index efficiency on your tables. I don't know if you have looked into the CREATE INDEX documentation, but you say you're using it properly. (mySQL documentation for Create Index).
- Change your table type. You might be able to do more with a table type that most fits your sql style. There are a few to choose from, each with their own optimizations.
DBI placeholders are a good start, but you may want to look into using perl in a few places to cache your results. It'd also help to know what types of things you are trying to do.
Reply to the post with more details, and we might be able to help you out more, but this is probably largely a mySQL question. Thanks.