I’ve been looking for an answer to this but haven’t found it anywhere. Are calls to PDO::prepare() cached, or should I cache the result myself, i.e. if I do the following
function foo () {
$handle = PDO::prepare(...);
/* do stuff with the handle */
}
will the prepare() statement be cached by PDO so that it’s quickly retrieved the second, third etc. times? Or is it better to do it myself, e.g.
function foo() {
static $handle = null;
if (!$handle) {
$handle = PDO::prepare(...);
}
/* do stuff with the handle */
}
There is the MySQL query cache. But in general you should definitely keep the identifier for the prepared statement and re-use it.
The query cache is gone in MySQL version 8.0, see
https://dba.stackexchange.com/questions/217577/why-mysql-remove-query-cache-in-8-0-version
https://dev.mysql.com/blog-archive/mysql-8-0-retiring-support-for-the-query-cache/