Rumah >pangkalan data >tutorial mysql >LATERAL JOIN lwn. Subqueries dalam PostgreSQL: Bilakah Anda Harus Menggunakan Yang Mana?
LATERAL JOIN vs. subquery dalam PostgreSQL: bila hendak menggunakan yang mana?
Latar belakang
Kemunculan LATERAL JOIN dalam PostgreSQL menyediakan penyelesaian yang berpotensi untuk masalah pembuangan data kompleks yang melibatkan subquery yang tidak cekap. Artikel ini bertujuan untuk menjelaskan keadaan dengan meneroka kes penggunaan dan perbezaan LATERAL JOIN dan subquery.
Apakah itu LATERAL JOIN?
LATERAL JOIN, yang diperkenalkan dalam PostgreSQL 9.3, membenarkan subkueri atau fungsi jadual muncul dalam klausa FROM, membolehkan mereka merujuk lajur daripada entri FROM sebelumnya. Tidak seperti subkueri biasa yang dilaksanakan sekali sahaja, LATERAL JOIN menilai ungkapan di sebelah kanan untuk setiap baris gabungan kiri, serupa dengan subkueri berkorelasi.
berbanding subkueri berkorelasi
LATERAL JOIN adalah serupa dengan subkueri berkorelasi, tetapi mempunyai beberapa perbezaan utama. Perlu diingat bahawa LATERAL JOIN boleh mengembalikan berbilang lajur dan baris, manakala subkueri berkorelasi biasanya terhad kepada satu nilai. Selain itu, dalam sintaks LATERAL JOIN, persamaan subkueri berkorelasi ialah LEFT JOIN LATERAL ... ON true.
Melangkaui fungsi subkueri
LATERAL JOIN menyediakan fungsi yang sukar dicapai dengan subquery. Contohnya, mereka membenarkan penggunaan fungsi jadual, merujuk silang berbilang entri FROM dan mengembalikan berbilang lajur daripada berbilang baris. Mereka juga boleh memanfaatkan fungsi yang mengembalikan koleksi untuk operasi yang lebih cekap.
PILIH fungsi koleksi pulangan dalam senarai
Fungsi pengembalian koleksi seperti unnest() boleh digunakan terus dalam senarai SELECT. Walaupun sebelum ini bermasalah, ini telah dioptimumkan sejak PostgreSQL 10, menyediakan alternatif kepada LATERAL JOIN untuk mengembalikan berbilang baris atau lajur. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa dalam kes ini, baris yang hilang dalam hasil menghapuskan keseluruhan baris, tidak seperti SERTAI LATERAL.
Atas ialah kandungan terperinci LATERAL JOIN lwn. Subqueries dalam PostgreSQL: Bilakah Anda Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!