Rumah >pangkalan data >tutorial mysql >mengoptimumkan pertanyaan dalam laravel dan mysql
Mengoptimumkan pertanyaan untuk set data yang besar dalam Laravel melibatkan beberapa strategi untuk meningkatkan prestasi dan kecekapan. Berikut ialah beberapa teknik utama yang boleh anda gunakan:
$users = User::select('id', 'name', 'email')->get();
Eager Loading: Gunakan eager loading untuk mengelakkan masalah pertanyaan N+1.
$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; }
Mengoptimumkan Pertanyaan Kompleks
Katakan anda perlu mengambil pengguna dengan siaran dan ulasan mereka dan anda mahu mengoptimumkan operasi ini:
$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);
Atas ialah kandungan terperinci mengoptimumkan pertanyaan dalam laravel dan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!