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

DDD
Lepaskan: 2024-10-29 09:11:30
asal
501 orang telah melayarinya

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

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

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!

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
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!