Memahami Model
Struktur jadual yang anda sediakan mewakili perhubungan hierarki melalui medan site_Id dan parent_Id. Setiap baris dalam jadual sepadan dengan tapak, dengan parent_Id merujuk ID tapak induknya. Matlamatnya adalah untuk mendapatkan semula semua kanak-kanak ID tapak yang diberikan dengan cekap.
Penghadan dengan Kaedah Semasa
Pendekatan semasa anda melibatkan berbilang pertanyaan dalam satu gelung, yang boleh menjadi tidak cekap . Untuk mengoptimumkan ini, mari kita terokai penyelesaian alternatif.
Pertanyaan Rekursif dengan PostgreSQL
Jika anda mempunyai pilihan untuk menggunakan pangkalan data yang menyokong pertanyaan rekursif, seperti PostgreSQL, anda boleh menggunakan CTE rekursif (Ungkapan Jadual Biasa) untuk merentasi hierarki dalam satu pertanyaan. Contohnya:
WITH RECURSIVE ChildSites AS ( SELECT site_Id, parent_Id FROM site WHERE parent_Id = <input_site_id> UNION ALL SELECT s.site_Id, s.parent_Id FROM site AS s JOIN ChildSites AS cs ON s.parent_Id = cs.site_Id ) SELECT * FROM ChildSites;
Model Data Dioptimumkan
Jika anda boleh mengubah suai model data, pertimbangkan untuk menggunakan model data yang direka khusus untuk data hierarki, seperti:
Menyimpan ID Root
Sebagai alternatif, anda boleh menambah lajur root_Id pada jadual untuk mengenal pasti moyang tertinggi bagi setiap tapak. Ini membolehkan pengambilan keseluruhan pokok dengan cekap menggunakan satu pertanyaan:
SELECT * FROM site WHERE root_Id = <input_root_id>;
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Semua Tapak Kanak-kanak dalam Pangkalan Data Hierarki dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!