Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengekstrak Maklumat Lajur Berindeks dalam PostgreSQL?

Bagaimana untuk Mengekstrak Maklumat Lajur Berindeks dalam PostgreSQL?

Barbara Streisand
Lepaskan: 2024-12-29 21:57:16
asal
602 orang telah melayarinya

How to Extract Indexed Column Information in PostgreSQL?

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan