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');