我正在使用FuelPHP & mySql開發應用程序,我正在使用提供的ORM功能。問題是與下表:只緩存來自FuelPHP的關係數據ORM結果
表:pdm_data
- 海量表(350+列,多行)
- 表數據是相當靜態的(更新每天只有一次)
- 主鍵:obj_id
表:change_request
- 只有幾列
- 數據經常變化(10-20次/分)
- 引用主鍵(obj_id從表pdm_data)
用戶可以自定義數據表是他們可見,例如。他們可以在列上保存過濾器(例如change_request.obj_id = 34 AND pdm_data.state = 6),然後將其轉換爲ORM實時查詢。
但是,使用ORM進行查詢確實很慢,因爲表pdm_data很大,甚至大約100行將導致多個mbs的數據。最大的問題似乎是在FuelPHP ORM中:即使查詢本身相對較快,模型水合等也需要很多秒。理想的解決方案是緩存來自pdm_data表的結果,因爲它相當靜態。不過,據我所知,FuelPHP不允許你通過關係來緩存表(你可以緩存查詢的完整結果,因此可以緩存這兩個表或沒有)。
此外,使用正常的SQL查詢加入而不是ORM並不是理想的解決方案,因爲我需要處理水合模型非常棒的其他任務。
我現在有下面的代碼:
//Initialize the query and use eager-loading
$query = Model_Changerequest::query()->related('pdmdata');
foreach($filters as $filter)
{
//First parameter can point to either table
$query->where($filter[0], $filter[1], $filter[2]);
}
$result = $query->get();
...
是否有人有這個好的解決辦法?
感謝您的閱讀!