Ved at bruge runSqlCommand-metoden får du den lille
bonus at du automatisk drager nytte af myggens caching-system. Det
betyder at hver unik SQL-forespørgsel bliver cachet, og næste gang du
laver den samme forespørgsel får du straks en cachet version, uden
overhovedet at tale med databasen. Dette plejer i runde tal at give en
hastighedsbesparelse på en faktor 100 for selv simple
forespørgsler.
Men da dine data i den eksterne database jo antageligt ændrer sig
er der også behov for at tømme cachen fra tid til anden, og til det
formål har du adgang til metoden cleanSqlCache(). Når du
ønsker at tømme cachen for alle SQL-kald lavet gennem
runSqlCommand gør du ganske enkelt således:
M2_SQL::cleanCache();
Det er dog også muligt at være lidt mere raffineret og kun tømme
udvalgte dele af SQL-cachen. Det forudsætter at du har givet en
cacheGroup-parameter med i dine
runSqlCommand-kald, så du kan bestemme hvilke dele der skal
slettes fra cachen igen.
Altså kan du lave din forespørgsel således:
$sql = 'select * from users';
$opts = array('cacheGroup' => 'users');
$res = M2_SQL::query($sql, $opts);Nu er din forespørgsel cachet i en cache-gruppe ved navn "users".
Vil du senere tømme cachen, men kun fjerne forespørgsler i cache-gruppen "users" gør du således:
M2_SQL::cleanCache('users');