1

ここのチュートリアルのようにクエリキャッシングを使用したい場合:

Yii クエリ キャッシング ガイド

すべてのテーブルにupdate_timeフィールドが必要かどうか

$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');

クエリ キャッシュを使用するには、フィールドが存在している必要がありますか?

4

2 に答える 2

0

あなたの質問に答えるには、Michael がすでに書いているように、必須ではありません。これについてもっと知るには、依存関係クエリが果たす役割を理解する必要があります。

例を考えてみましょう。すべてのユーザーを一覧表示するクエリをキャッシュします。のようなものSELECT * FROM users。任意の時点で 100 ユーザーであると仮定します。

ここで主な質問は、キャッシュされたデータが無効になるのはいつだと思いますか? 新しいユーザーが追加されるたびに、再クエリを実行する必要があります (キャッシュ データを使用しない/キャッシュ データを無効にする)。新しいユーザーが追加されたことを確認する方法は? ID番号を照会する。したがって、クエリSELECT MAX(ID) FROM Usersが異なる値を返す場合は、新しいユーザーが追加されたことを意味します。

覚えておいてくださいユーザーが削除された場合、私の例は無効になります。その際、ユーザーを削除した後、それぞれのキャッシュデータを削除する必要があります。

このようにして、キャッシュ データの検証に使用できる関連クエリを見つける必要があります。

于 2015-05-12T09:38:37.103 に答える