Rumah > pangkalan data > tutorial mysql > Bagaimanakah Raw SQL Boleh Meningkatkan Prestasi Pertanyaan Rails Kompleks?

Bagaimanakah Raw SQL Boleh Meningkatkan Prestasi Pertanyaan Rails Kompleks?

Patricia Arquette
Lepaskan: 2025-01-15 09:15:45
asal
423 orang telah melayarinya

How Can Raw SQL Enhance the Performance of Complex Rails Queries?

Mengoptimumkan Pertanyaan Rel Kompleks dengan SQL Mentah

Menggunakan aplikasi Rails, terutamanya pada platform seperti Heroku, kadangkala boleh mendedahkan kesesakan prestasi yang berpunca daripada pertanyaan pangkalan data yang kompleks. Artikel ini menunjukkan cara menggunakan SQL mentah boleh meningkatkan kecekapan pertanyaan sedemikian dengan ketara.

Memanfaatkan SQL Mentah dalam Rails

Rails menyediakan mekanisme untuk melaksanakan SQL tersuai secara langsung. Ini memintas pembina pertanyaan ActiveRecord, selalunya menghasilkan masa pelaksanaan yang lebih pantas. Inilah prosesnya:

  1. Bina pertanyaan SQL anda sebagai rentetan.
  2. Gunakan ActiveRecord::Base.connection.execute untuk menjalankan pertanyaan terhadap pangkalan data.
  3. Hasilnya dikembalikan sebagai tatasusunan, sedia untuk diproses dalam kod Ruby anda.

Contoh Ilustrasi

Mari kita periksa senario yang melibatkan jadual bercantum dan pesanan:

<code class="language-ruby">@payments = PaymentDetail.joins(:project).order('payment_details.created_at desc')
@payment_errors = PaymentError.joins(:project).order('payment_errors.created_at desc')
@all_payments = (@payments + @payment_errors)</code>
Salin selepas log masuk

Kod ini bergabung dengan jadual PaymentDetail dan PaymentError, menyusun keputusan mengikut cap masa created_at. SQL mentah yang setara ialah:

<code class="language-sql">sql = "SELECT * FROM payment_details pd
       LEFT JOIN projects p ON pd.project_id = p.id
       UNION ALL
       SELECT * FROM payment_errors pe
       LEFT JOIN projects p ON pe.project_id = p.id
       ORDER BY created_at DESC"</code>
Salin selepas log masuk

Pelaksanaan adalah mudah:

<code class="language-ruby">records_array = ActiveRecord::Base.connection.execute(sql)</code>
Salin selepas log masuk

Peningkatan Prestasi

Menggunakan SQL mentah menghapuskan overhed penjanaan pertanyaan Rekod Aktif Rails, yang berpotensi membawa kepada peningkatan prestasi yang ketara, terutamanya dengan set data yang besar. records_array boleh dilayan seperti mana-mana tatasusunan Ruby, membenarkan penyepaduan yang lancar ke dalam logik aplikasi anda. Teknik ini amat berharga apabila menangani pertanyaan rumit yang terdedah kepada tamat masa.

Atas ialah kandungan terperinci Bagaimanakah Raw SQL Boleh Meningkatkan Prestasi Pertanyaan Rails Kompleks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan