PostgreSQL

Cara Membuat Indeks di PostgreSQL

Cara Membuat Indeks di PostgreSQL

Indeks adalah jadual carian khusus yang digunakan oleh mesin pencari pangkalan data untuk mempercepat hasil pertanyaan. Indeks adalah rujukan untuk maklumat dalam jadual. Contohnya, jika nama-nama dalam buku kenalan tidak mengikut abjad, anda harus turun setiap baris dan mencari setiap nama sebelum anda mencapai nombor telefon tertentu yang anda cari. Indeks mempercepat perintah SELECT dan frasa DI MANA, melakukan kemasukan data dalam arahan UPDATE dan INSERT. Tidak kira sama ada indeks dimasukkan atau dihapus, tidak ada kesan pada maklumat yang terdapat dalam jadual. Indeks boleh menjadi istimewa dengan cara yang sama bahawa batasan UNIK membantu mengelakkan rekod replika di medan atau set bidang yang indeksnya ada.

Sintaksis Umum

Sintaks umum berikut digunakan untuk membuat indeks.

>> BUAT INDEX index_name ON table_name (column_name);

Untuk mula mengerjakan indeks, buka pgAdmin Postgresql dari bar aplikasi. Anda akan mendapat pilihan 'Pelayan' yang dipaparkan di bawah. Klik kanan pilihan ini dan sambungkan ke pangkalan data.

Seperti yang anda lihat, pangkalan data 'Test' disenaraikan dalam pilihan 'Pangkalan Data'. Sekiranya anda tidak memilikinya, klik kanan 'Pangkalan Data', arahkan ke pilihan 'Buat', dan beri nama pangkalan data mengikut pilihan anda.

Luaskan pilihan 'Skema', dan anda akan dapati pilihan 'Jadual' disenaraikan di sana. Sekiranya anda tidak memilikinya, klik kanan padanya, arahkan ke 'Buat', dan klik pilihan 'Jadual' untuk membuat jadual baru. Oleh kerana kami telah membuat jadual 'emp', anda dapat melihatnya dalam senarai.

Cubalah SELECT query di Query Editor untuk mengambil rekod jadual 'emp', seperti yang ditunjukkan di bawah.

>> PILIH * DARI orang ramai.emp ORDER BY “id” ASC;

Data berikut akan terdapat dalam jadual 'emp'.

Buat Indeks Lajur Tunggal

Kembangkan jadual 'emp' untuk mencari pelbagai kategori, e.g., Lajur, Kekangan, Indeks, dll. Klik kanan 'Indeks', arahkan ke pilihan 'Buat', dan klik 'Indeks' untuk membuat indeks baru.

Bentukkan indeks untuk jadual 'emp' yang diberikan, atau paparan yang berpasangan, menggunakan tetingkap dialog Indeks. Di sini, terdapat dua tab: 'Umum' & 'Definisi.'Pada tab' Umum ', masukkan tajuk khusus untuk indeks baru di medan' Nama '. Pilih 'tablespace' di mana indeks baru akan disimpan menggunakan senarai drop-down di sebelah 'Tablespace.'Seperti di kawasan' Komen ', buat komen indeks di sini. Untuk memulakan proses ini, arahkan ke tab 'Definisi'.

Di sini, tentukan 'Kaedah Akses' dengan memilih jenis indeks. Selepas itu, untuk membuat indeks anda sebagai 'Unik', terdapat beberapa pilihan lain yang disenaraikan di sana. Di Kawasan 'Lajur', ketuk tanda '+', dan tambahkan nama lajur yang akan digunakan untuk pengindeksan. Seperti yang anda lihat, kami hanya menggunakan pengindeksan ke ruangan 'Telefon'. Untuk memulakan, pilih bahagian SQL.

Tab SQL menunjukkan arahan SQL yang telah dibuat oleh input anda sepanjang dialog Indeks. Klik butang 'Simpan' untuk membuat indeks.

Sekali lagi, pergi ke pilihan 'Tables', dan arahkan ke jadual 'emp'. Muat semula pilihan 'Indeks', dan anda akan menemui indeks 'index_on_phone' yang baru dibuat disenaraikan di dalamnya.

Sekarang, kita akan melaksanakan perintah EXPLAIN SELECT untuk memeriksa hasil untuk indeks dengan klausa WHERE. Ini akan menghasilkan output berikut, yang mengatakan, 'Seq Scan on emp.'Anda mungkin tertanya-tanya mengapa ini berlaku semasa anda menggunakan indeks.

Sebab: Perancang Postgres boleh memutuskan untuk tidak mempunyai indeks kerana pelbagai alasan. Pakar strategi membuat keputusan terbaik sepanjang masa, walaupun alasannya tidak selalu jelas. Tidak masalah jika carian indeks digunakan dalam beberapa pertanyaan, tetapi tidak dalam semua pertanyaan. Entri yang dikembalikan dari kedua-dua jadual mungkin berbeza, bergantung pada nilai tetap yang dikembalikan oleh pertanyaan. Kerana ini berlaku, imbasan urutan hampir selalu lebih cepat daripada imbasan indeks, yang menunjukkan bahawa mungkin perancang pertanyaan tepat dalam menentukan bahawa kos menjalankan pertanyaan dengan cara ini dikurangkan.

Buat Indeks Pelbagai Lajur

Untuk membuat indeks berbilang lajur, buka shell baris perintah dan pertimbangkan jadual 'pelajar' berikut untuk mula mengerjakan indeks dengan beberapa lajur.

>> PILIH * DARI Pelajar;

Tuliskan pertanyaan CREATE INDEX berikut di dalamnya. Pertanyaan ini akan membuat indeks bernama 'new_index' di lajur 'sname' dan 'age' pada jadual 'pelajar'.

>> BUAT INDEX new_index ON Pelajar (sname, age);

Sekarang, kami akan menyenaraikan sifat dan atribut indeks 'new_index' yang baru dibuat menggunakan perintah '\ d'. Seperti yang anda lihat dalam gambar, ini adalah indeks jenis btree yang diterapkan pada lajur 'sname' dan 'usia'.

>> \ d new_index;

Buat Indeks UNIK

Untuk membina indeks unik, anggap jadual 'emp' berikut.

>> PILIH * DARI emp;

Jalankan pertanyaan CREATE UNIQUE INDEX di shell, diikuti dengan nama indeks 'empind' di lajur 'name' pada jadual 'emp'. Dalam output, anda dapat melihat bahawa indeks unik tidak dapat diterapkan pada lajur dengan nilai 'nama' pendua.

>> BUAT empind ON INDEX yang unik (nama);

Pastikan menggunakan indeks unik hanya pada lajur yang tidak mengandungi pendua. Untuk jadual 'emp', anda mungkin menganggap bahawa hanya lajur 'id' yang mengandungi nilai unik. Oleh itu, kami akan menggunakan indeks unik untuknya.

>> BUAT empind ON INDEX yang unik (id);

Berikut adalah sifat indeks unik.

>> \ empid;

Indeks Penurunan

Pernyataan DROP digunakan untuk membuang indeks dari jadual.

>> DROP INDEX empind;

Kesimpulannya

Walaupun indeks dirancang untuk meningkatkan kecekapan pangkalan data, dalam beberapa kes, tidak mungkin menggunakan indeks. Semasa menggunakan indeks, peraturan berikut mesti dipertimbangkan:

Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...