クエリキャッシュされないSELECT文
MySQLのクエリキャッシュ機能ですが、SELECT文の内容によってはquery_cache_XXX変数の値に依らず無条件に結果がキャッシュされませんよね。
ではどんなキーワードを含んでいるとキャッシュされないのでしょうか。sql_yacc.yyとlex.hで確認してみました。
●SQL_NO_CAHCE
●FOR UPDATE
●LOCK IN SHARE MODE
●CURRENT_DATE
●CURDATE
●CURRENT_TIME
●CURRENT_TIMESTAMP
●CURTIME
●CURRENT_USER
●DATABASE
●DATABASES
●LAST_INSERT_ID
●MASTER_POS_WAIT
●NOW
●ROW_COUNT
●SYSDATE
●UNIX_TIMESTAMP
●USER
●UTC_DATE
●UTC_TIME
●UTC_TIMESTAMP
●(ユーザ定義関数)
●(ストアドプロシージャ)
これらのキーワードを元に精査すればSELECT文がクエリキャッシュに載らない理由もはっきりしますね。