Untuk pemeriksaan kesetaraan sederhana (=
), indeks B-Tree pada varchar
atau text
kolom sederhana dan pilihan terbaik. Ini tentu sangat membantu kinerja banyak .
Tentu saja, indeks B-Tree pada integer
sederhana berkinerja lebih baik. Sebagai permulaan, membandingkan integer
simple sederhana nilai sedikit lebih cepat. Tetapi yang lebih penting, kinerja juga merupakan fungsi dari ukuran indeks. Kolom yang lebih besar berarti lebih sedikit baris per halaman data, berarti lebih banyak halaman yang harus dibaca ...
Sejak HomeAddress
hampir tidak unik, itu bukan kunci primer alami yang baik. Saya sangat menyarankan untuk menggunakan kunci primer pengganti alih-alih. serial
kolom
adalah pilihan yang jelas untuk itu. Satu-satunya tujuannya adalah memiliki kunci utama yang sederhana dan cepat untuk digunakan.
Jika Anda memiliki tabel lain yang merujuk tabel tersebut, ini menjadi lebih efisien. Alih-alih menduplikasi string panjang untuk kolom kunci asing, Anda hanya perlu 4 byte untuk kolom bilangan bulat. Dan Anda tidak perlu melakukan banyak pembaruan, karena alamat pasti akan berubah, sementara pk pengganti bisa tetap sama (tetapi tidak harus, tentu saja).
Tabel Anda dapat terlihat seperti ini:
CREATE TABLE resident (
resident_id serial PRIMARY KEY
,address text NOT NULL
-- more columns
);
CREATE INDEX resident_adr_idx ON resident(address);
Ini menghasilkan dua indeks B-Tree. Indeks unik di resident_id
dan indeks biasa pada address
.
Selengkapnya tentang indeks di manual
.
Postgres menawarkan banyak opsi - tetapi Anda tidak perlu lagi untuk kasus sederhana ini.