ここのチュートリアルのようにクエリキャッシングを使用したい場合:
すべてのテーブルにupdate_timeフィールドが必要かどうか
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
クエリ キャッシュを使用するには、フィールドが存在している必要がありますか?
ここのチュートリアルのようにクエリキャッシングを使用したい場合:
すべてのテーブルにupdate_timeフィールドが必要かどうか
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
クエリ キャッシュを使用するには、フィールドが存在している必要がありますか?
あなたの質問に答えるには、Michael がすでに書いているように、必須ではありません。これについてもっと知るには、依存関係クエリが果たす役割を理解する必要があります。
例を考えてみましょう。すべてのユーザーを一覧表示するクエリをキャッシュします。のようなものSELECT * FROM users
。任意の時点で 100 ユーザーであると仮定します。
ここで主な質問は、キャッシュされたデータが無効になるのはいつだと思いますか? 新しいユーザーが追加されるたびに、再クエリを実行する必要があります (キャッシュ データを使用しない/キャッシュ データを無効にする)。新しいユーザーが追加されたことを確認する方法は? ID番号を照会する。したがって、クエリSELECT MAX(ID) FROM Users
が異なる値を返す場合は、新しいユーザーが追加されたことを意味します。
覚えておいてくださいユーザーが削除された場合、私の例は無効になります。その際、ユーザーを削除した後、それぞれのキャッシュデータを削除する必要があります。
このようにして、キャッシュ データの検証に使用できる関連クエリを見つける必要があります。