mengoptimumkan pertanyaan dalam laravel dan mysql

王林
Lepaskan: 2024-07-16 12:03:00
asal
325 orang telah melayarinya

optimize query in laravel and 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:

  1. Gunakan Eloquent dengan Cekap Pilih Lajur Khusus: Hanya pilih lajur yang anda perlukan untuk meminimumkan jumlah data yang diambil.
$users = User::select('id', 'name', 'email')->get();

Salin selepas log masuk

Eager Loading: Gunakan eager loading untuk mengelakkan masalah pertanyaan N+1.

$users = User::with('posts', 'comments')->get();
Salin selepas log masuk
  1. Gunakan Pembina Pertanyaan Untuk pertanyaan kompleks, Pembina Pertanyaan boleh menjadi lebih cekap daripada Eloquent.
$users = DB::table('users')->where('status', 'active')->get();
Salin selepas log masuk
  1. Penomboran Daripada mendapatkan semula semua rekod sekali gus, gunakan penomboran untuk memuatkan data dalam ketulan.
$users = User::paginate(50);
Salin selepas log masuk
  1. Mengindeks Pastikan jadual pangkalan data anda mempunyai indeks yang betul pada lajur yang sering ditanya.
Schema::table('users', function (Blueprint $table) {
    $table->index('email');
});
Salin selepas log masuk
  1. Chunking Untuk memproses set data yang besar, gunakan chunking untuk mengendalikan rekod dalam kepingan yang lebih kecil.
User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // Process each user
    }
});
Salin selepas log masuk
  1. Caching Cache hasil pertanyaan yang kerap dijalankan untuk mengurangkan beban pangkalan data.
$users = Cache::remember('active_users', 60, function () {
    return User::where('status', 'active')->get();
});
Salin selepas log masuk
  1. Gunakan Pertanyaan Mentah untuk Operasi Kompleks Untuk pertanyaan yang sangat kompleks, menggunakan SQL mentah kadangkala boleh menjadi lebih cekap.
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);
Salin selepas log masuk
  1. Optimumkan Konfigurasi Pangkalan Data Pastikan pangkalan data anda dikonfigurasikan untuk prestasi optimum:
  • Tingkatkan had ingatan.
  • Tala saiz penimbal/cache.
  • Gunakan enjin storan yang sesuai.
  1. Memprofilkan dan Menganalisis Pertanyaan Gunakan log pertanyaan Laravel untuk menganalisis dan memprofilkan pertanyaan anda.
DB::enableQueryLog();
// Run your query
$users = User::all();
$queries = DB::getQueryLog();
dd($queries);
Salin selepas log masuk
  1. Elakkan Masalah N+1 Pastikan anda tidak membuat pertanyaan tambahan dalam gelung.
// 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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

Atas ialah kandungan terperinci mengoptimumkan pertanyaan dalam laravel dan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!