Rumah >pangkalan data >tutorial mysql >Bagaimanakah Raw SQL Boleh Meningkatkan Prestasi Pertanyaan Rails Kompleks?
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:
ActiveRecord::Base.connection.execute
untuk menjalankan pertanyaan terhadap pangkalan data.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>
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>
Pelaksanaan adalah mudah:
<code class="language-ruby">records_array = ActiveRecord::Base.connection.execute(sql)</code>
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!