in reply to $sth->prepare_cached loop
What will happen will vary depending on the database.
With Oracle, you will prepare the query once. And then send 3 execute statements to it. Which saves you the effort of compiling the query. Since compilation is expensive in Oracle, this is a win.
In MySQL the caching is done client side. So you wind up preparing and executing the query 3 times. Since MySQL makes preparing the query cheap, this doesn't cost very much.
In Section
Seekers of Perl Wisdom