在我的symfony項目,我有一個「複雜」的查詢,看起來像:內存緩存使用的Symfony /原則重新加載數據
$d = Doctrine_Core::getTable('MAIN_TABLE')
// Create the base query with some keywords
->luceneSearch($keywords)
->innerJoin('w.T1 ws')
->innerJoin('ws.T2 s')
->innerJoin('w.T3 piv')
->innerJoin('piv.T4 per')
->innerJoin('w.T5 st')
...
->innerJoin('doc.T12 docT')
->innerJoin('w.Lang lng')
->execute();
我將所有這些innerJoin減少查詢次數由於我的數據模型。實際上所有的數據都通過這個查詢來恢復......但是查詢需要2到20秒。取決於關鍵字。
我決定使用memcache,因爲數據不會一直在改變。
我所做的是配置內存緩存和添加
...
->useResultCache(true)
->execute();
到我的查詢。
什麼奇怪的是:
- 第一次(當緩存爲空/刷新),只有一個查詢是執行
- 第二次,〜130頃執行,它需要更多的時間比第一個...
這些「新」查詢檢索數據從「內部聯接」爲每個記錄。
我不明白爲什麼「innerjoined」數據沒有保存在緩存中?
我試圖改變水合物模式,但它似乎沒有影響。
有人有想法嗎?
您應該將解決方案遷移到一個答案。然後你可以接受你自己的答案。這是合法的。 – 2011-03-16 13:09:05