De twee dingen die je hebt gezegd zijn helemaal niet gelijkwaardig.
MySQL's SQL_NO_CACHE weerhoudt de engine er NIET van om gegevens in de cache te gebruiken. Het betekent dat de query niet in de cache van MySQL querycache is opgeslagen .
De querycache is niet hetzelfde als elke schijfcache die de engine zou kunnen hebben, omdat deze de resultaten van query's in de cache opslaat, niet blokken van de schijf (of rijen van een tabel, enz.). Dus het slaat de resultaten van een tekststatement op in de cache.
De reden voor het gebruik van SQL_NO_CACHE is dat u weet dat u een weinig gebruikte query gaat uitvoeren die veel gegevens retourneert (daarom zou veel ruimte in de cache in beslag nemen).
Maar de meeste MySQL-installaties wordt nu aangeraden om de querycache uit te schakelen om meer geheugen vrij te maken voor paginacaches enz. (zie http://dom.as/tech/query-cache-tuner/ )