Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Memilih Berbilang Lajur dengan Cekap daripada Subkueri dalam MySQL?

Bagaimanakah Saya Boleh Memilih Berbilang Lajur dengan Cekap daripada Subkueri dalam MySQL?

DDD
DDDasal
2024-10-29 09:11:30503semak imbas

 How Can I Efficiently Select Multiple Columns from Subqueries in MySQL?

Memilih Berbilang Lajur daripada Subqueries dalam MySQL

Anda mempunyai senario di mana anda perlu mendapatkan id dan nilai (terjemahan) untuk setiap atribut dalam bahasa tertentu. Walau bagaimanapun, sesetengah atribut mungkin tidak mempunyai terjemahan dalam bahasa yang diberikan.

Pertimbangan Prestasi untuk Subkueri

Satu pendekatan ialah menggunakan subkueri untuk setiap lajur, seperti yang ditunjukkan dalam contoh anda :

select attribute, 
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1), 
from attribute a;

Sementara pendekatan ini berfungsi, ia menimbulkan kebimbangan tentang prestasi jika subkueri tidak dapat dioptimumkan oleh MySQL.

Menggunakan Jadual Maya

Penyelesaian yang lebih cekap ialah menggunakan jadual maya. Dengan melampirkan subkueri dalam kurungan, kami boleh mencipta jadual maya yang boleh digabungkan dengan jadual lain dalam pertanyaan anda.

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

Dalam contoh ini, jadual maya b mengandungi id yang dikehendaki dan lajur terjemahan daripada jadual atributTranslation, dicantumkan dengan jadual atribut a. Ini menghapuskan keperluan untuk berbilang subkueri dan meningkatkan prestasi.

Kesimpulan

Menggunakan jadual maya membolehkan anda memilih berbilang lajur daripada subkueri dengan cekap, di samping menyediakan fleksibiliti untuk mencipta operasi gabungan yang kompleks. Pendekatan ini amat berfaedah apabila berurusan dengan pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Berbilang Lajur dengan Cekap daripada Subkueri dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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