Rumah > Artikel > pangkalan data > Bagaimanakah Saya Boleh Memilih Berbilang Lajur dengan Cekap daripada Subkueri dalam 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!