De to ting, du har nævnt, er slet ikke ækvivalente.
MySQL's SQL_NO_CACHE forhindrer IKKE motoren i at bruge cachelagrede data. Det betyder, at forespørgslen ikke er cachelagret i MySQL forespørgselscachen .
Forespørgselscachen er ikke den samme som enhver diskcache, som motoren måtte have, fordi den cacher resultaterne af forespørgsler, ikke blokke fra disken (eller rækker fra en tabel osv.). Så den cacher resultaterne af en tekstsætning.
Grunden til at bruge SQL_NO_CACHE er, at du ved, at du kommer til at lave en sjældent brugt forespørgsel, som returnerer en masse data (derfor ville optage meget plads i cachen).
Men de fleste MySQL-installationer rådes nu til at slå forespørgselscachen fra for at skabe mere hukommelse til sidecache osv. (se http://dom.as/tech/query-cache-tuner/ )