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

Optimalkan tabel hanya-baca PostgreSQL

Kolom yang digunakan untuk pemfilteran atau bergabung (atau, pada tingkat yang lebih rendah, menyortir ) menarik untuk pengindeksan. Kolom yang baru saja dipilih hampir tidak relevan! Untuk kueri berikut, hanya indeks di a dan e semoga bermanfaat:

SELECT a,b,c,d
FROM   tbl_a
WHERE  a = $some_value
AND    e < $other_value;

Di sini, f dan mungkin c adalah kandidat juga:

SELECT a,b,c,d
FROM   tbl_a
JOIN   tbl_b USING (f)
WHERE  a = $some_value
AND    e < $other_value
ORDER  BY c;

Setelah membuat indeks, uji untuk melihat apakah indeks benar-benar berguna dengan EXPLAIN ANALYZE . Juga bandingkan waktu eksekusi dengan dan tanpa indeks. Menghapus dan membuat ulang indeks cepat dan mudah. Ada juga parameter untuk eksperimen dengan EXPLAIN ANALYZE . Perbedaannya mungkin mengejutkan atau tidak ada sama sekali.
Karena tabel Anda hanya dapat dibaca, pemeliharaan indeks menjadi murah. Ini hanya masalah ruang disk.

Jika Anda benar-benar ingin tahu apa yang Anda lakukan, mulai dengan membaca dokumen .

Jika Anda tidak tahu kueri apa yang diharapkan ...

  1. Coba log kueri yang cukup untuk menemukan kasus penggunaan umum. Buat log kueri dengan parameter log_statement = all untuk itu. Atau cukup catat kueri lambat menggunakan log_min_duration_statement .

  2. Buat indeks yang mungkin berguna dan periksa statistik setelah beberapa waktu untuk melihat apa yang sebenarnya digunakan. PostgreSQL memiliki seluruh infrastruktur untuk statistik pemantauan . Salah satu cara mudah untuk mempelajari statistik (dan banyak tugas lainnya) adalah pgAdmin di mana Anda dapat memilih tabel / fungsi / indeks Anda dan mendapatkan semua data pada tab "statistik" di browser objek (jendela utama).

  3. Lanjutkan seperti yang dijelaskan di atas untuk melihat apakah indeks yang digunakan benar-benar mempercepat.

  4. Jika perencana kueri harus memilih untuk menggunakan satu atau lebih indeks Anda tetapi tidak ada atau efek buruk, maka mungkin ada yang salah dengan penyiapan Anda dan Anda perlu mempelajari dasar-dasar pengoptimalan kinerja:vakum, analisis, parameter biaya, penggunaan memori, ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pivot/lintasi data baris yang berbeda ke kolom dengan postgres

  2. Bagaimana saya bisa mengatur jalur untuk aplikasi heroku postgresql?

  3. psycopg2 setara dengan mysqldb.escape_string?

  4. Entity Framework ObjectContext -> panggilan SQL mentah ke DBMS asli

  5. postgresql - ganti semua instance string dalam bidang teks