Laravel에서 대규모 데이터 세트에 대한 쿼리를 최적화하려면 성능과 효율성을 향상시키기 위한 여러 전략이 필요합니다. 사용할 수 있는 몇 가지 핵심 기술은 다음과 같습니다.
$users = User::select('id', 'name', 'email')->get();
Eager Loading: N+1 쿼리 문제를 방지하려면 Eager Loading을 사용하세요.
$users = User::with('posts', 'comments')->get();
$users = DB::table('users')->where('status', 'active')->get();
$users = User::paginate(50);
Schema::table('users', function (Blueprint $table) { $table->index('email'); });
User::chunk(100, function ($users) { foreach ($users as $user) { // Process each user } });
$users = Cache::remember('active_users', 60, function () { return User::where('status', 'active')->get(); });
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);
DB::enableQueryLog(); // Run your query $users = User::all(); $queries = DB::getQueryLog(); dd($queries);
// Bad: N+1 problem $users = User::all(); foreach ($users as $user) { echo $user->profile->bio; } // Good: Eager loading $users = User::with('profile')->get(); foreach ($users as $user) { echo $user->profile->bio; }
복잡한 쿼리 최적화
사용자의 게시물과 댓글을 가져와야 하며 이 작업을 최적화하고 싶다고 가정해 보겠습니다.
$users = User::select('id', 'name', 'email') ->with(['posts' => function ($query) { $query->select('id', 'user_id', 'title') ->with(['comments' => function ($query) { $query->select('id', 'post_id', 'content'); }]); }]) ->paginate(50);
위 내용은 laravel 및 mysql에서 쿼리 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!