PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tốt hơn là tạo chỉ mục trước khi điền vào bảng với dữ liệu hay sau khi dữ liệu được đặt đúng vị trí?

Tạo chỉ mục sau khi chèn dữ liệu là cách hiệu quả hơn (thậm chí thường được khuyến khích giảm chỉ mục trước khi nhập hàng loạt và sau khi nhập, tạo lại nó).

Ví dụ tổng hợp (PostgreSQL 9.1, máy phát triển chậm, một triệu hàng):

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

Chèn và sau đó tạo chỉ mục - khoảng 12 giây

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

Tạo chỉ mục và sau đó chèn - khoảng 25,5 giây (chậm hơn hai lần)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP không tải php_pgsql.dll trên Windows

  2. Cơ chế sao chép vật lý trong PostgreSQL

  3. Cách sử dụng EXECUTE FORMAT ... USING trong hàm postgres

  4. Postgres sao chép Heroku Production DB sang DB phát triển cục bộ

  5. Khóa ngoại PostgreSQL không tồn tại, vấn đề kế thừa?