필자는 데이터베이스에 4 백만 행을 가지고 있는데, 필자는 시간에 걸러 내야한다.개체에 Laravel 절?
현재 내 쿼리를 캐시하기 위해 remember
함수를 사용하고 있습니다. 하지만 내 사용자에게 허용되는 몇 가지 정확한 쿼리가 있습니다. 어떻게 내가이 의미하는 것은 : 작년의
- 모든 데이터를 6 개월
- 모든 데이터는 지난 달의
- 모든 데이터 지난 주
- 모든 데이터를
캐시에 4 개의 쿼리가 있다는 것은 다음과 같습니다. 캐시없이 쿼리를 실행하면 약 30 초가 걸립니다.
내가 원하는 것은 모든 데이터를받은 후 해당 데이터를 필터링하는 것입니다. 한 번을 캐싱합니다.
나는을 사용하여 원하는 방식으로 필터링하려면 모든 데이터를 사용할 수 있습니다.
A는 몇 가지 코드를 더 명확하게 비트 : 어디 기능
<?php
if (Cache::has('alldata')) {
$alldata = Cache::get('alldata');
} else {
$alldata = Data::all();
}
// Filters
$alldata->where('activity', '=', 1)->get();
// The code i currently use for every filter
$lastYearData = Data::where('column', '=', 'filter')->get();
// The line above "4 times" for each filter
?>
아마도 캐시에 수백만 개의 행을 저장하고 싶지 않을 것입니다. – ceejayoz
테이블에 수백만 개의 행이 포함되어 있지만 그 중 일부만 결과를 포함한다고 가정합니다. – KyleK
Before and After에 필터를 추가하면 파일에 출력을 캐싱 할 수 있습니다.이 방법을 사용하면 다음 번에 데이터베이스에 변경 사항이 적용될 때까지 정적 파일 내용을 서버에 배치 할 수 있습니다. – Burimi