Mengekstrak Maklumat Lajur Berindeks dalam PostgreSQL
Dalam PostgreSQL, mendapatkan lajur yang disertakan dalam indeks ialah tugas yang berharga untuk analisis pangkalan data dan pengoptimuman prestasi . Tidak seperti perintah SHOW INDEXES FOR MySQL, PostgreSQL tidak mempunyai cara yang mudah untuk mendapatkan maklumat ini. Walau bagaimanapun, dengan menggunakan jadual sistem dan fungsi agregat, adalah mungkin untuk mencapai hasil yang serupa.
Mendapatkan Kembali Lajur dan Indeks Berindeks
Pertanyaan berikut memanfaatkan pg_class, pg_index, dan jadual sistem pg_attribute untuk mengumpulkan butiran tentang indeks dan yang berkaitan dengannya lajur:
SELECT t.relname AS table_name, i.relname AS index_name, a.attname AS column_name FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = 'r' AND t.relname LIKE 'table_name_pattern';
Pertanyaan ini mendapatkan semula nama jadual, nama indeks dan nama lajur untuk semua indeks pada jadual tertentu atau sekumpulan jadual.
Mengumpulkan Lajur Berindeks
Untuk mendapatkan senarai lajur yang disatukan yang diindeks oleh setiap indeks, pertanyaan boleh diubah suai untuk mengumpulkan hasil dan mengagregatkan nama lajur menggunakan fungsi array_to_string():
SELECT t.relname AS table_name, i.relname AS index_name, array_to_string(array_agg(a.attname), ', ') AS column_names FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = 'r' AND t.relname LIKE 'table_name_pattern' GROUP BY t.relname, i.relname;
Pertanyaan ini akan memberikan output jadual yang menunjukkan nama jadual, nama indeks dan senarai lajur yang dipisahkan koma dimasukkan dalam setiap indeks. Maklumat ini boleh menjadi berharga untuk memahami strategi pengindeksan dan mengoptimumkan prestasi pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Maklumat Lajur Berindeks dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!