残念ながら、特定のクエリ結果をキャッシュに保持するようにMySQLエンジンに指示するオプションはありません。自分で実装する必要があります。
クエリ結果を「キャッシュ」テーブルに保存できます(ただし、TEMPORARY
このようなテーブルは作成スレッドからのみアクセス可能であり、接続が閉じられるとドロップされるため、テーブルには保存できません)。
次にTRIGGERS
、基になるテーブルを設定します。これにより、そのようなテーブルが更新されたときにキャッシュがクリアされます。または、キャッシュされたデータにを追加するだけTIMESTAMP
で、任意の期間が経過すると廃止されたと見なすことができます。キャッシュからわずかに廃止されたデータを取得する余裕がある場合は、後者のオプションの方が安価です。
ただし、解決策は、クエリを高速化するために、クエリまたは構造を最適化する必要があることです。
[編集]
実際には、それを行うための(ねじれた)方法があります。query_cache_type
サーバーオプションを2に設定して、SQL_CACHE
キーワードを使用するクエリのみがキャッシュされるようにすることができます。これにより、キャッシュするクエリを非常に細かく制御できます。をquery_cache_size
使用してすべてのクエリのすべての結果を保持するのに十分な大きさにしSQL_CACHE
ます。そうすれば、上書きされることはありません。ただし、すべてのキャッシュを自分で管理する必要があります...