PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah lebih baik membuat indeks sebelum mengisi tabel dengan data, atau setelah data ada?

Membuat indeks setelah memasukkan data adalah cara yang lebih efisien (bahkan sering disarankan untuk menghapus indeks sebelum impor batch dan setelah impor membuatnya kembali).

Contoh sintetik (PostgreSQL 9.1, mesin pengembangan lambat, satu juta baris):

CREATE TABLE test1(id serial, x integer);
INSERT INTO test1(id, x) SELECT x.id, x.id*100 FROM generate_series(1,1000000) AS x(id);
-- Time: 7816.561 ms
CREATE INDEX test1_x ON test1 (x);
-- Time: 4183.614 ms

Sisipkan lalu buat indeks - sekitar 12 detik

CREATE TABLE test2(id serial, x integer);
CREATE INDEX test2_x ON test2 (x);
-- Time: 2.315 ms
INSERT INTO test2(id, x) SELECT x.id, x.id*100 FROM generate_series(1,1000000) AS x(id);
-- Time: 25399.460 ms

Buat indeks lalu masukkan - sekitar 25,5 detik (lebih dari dua kali lebih lambat)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengatasi masalah hak istimewa saat memulihkan Database PostgreSQL

  2. Cara mengganti basis data menggunakan PostgreSQL

  3. Rails 3, ActiveRecord, PostgreSQL - perintah .uniq tidak berfungsi?

  4. Melakukan WHERE IN pada beberapa kolom di Postgresql

  5. Java.sql.SQLException yang terkenal:Tidak ditemukan driver yang cocok