Ini bukan hanya "sekelompok penyetelan (indeks dll.)". Ini penting dan harus dilakukan.
Anda memposting beberapa detail, tetapi mari kita coba.
Aturannya adalah:Coba dan temukan set kerja yang paling umum. Lihat apakah itu cocok di RAM. Optimalkan perangkat keras, pengaturan buffer PG/OS, dan indeks/pengelompokan PG untuk itu. Jika tidak, cari agregat, atau jika tidak dapat diterima dan Anda memerlukan akses acak sepenuhnya, pikirkan perangkat keras apa yang dapat memindai seluruh tabel untuk Anda dalam waktu yang wajar.
Seberapa besar meja Anda (dalam gigabyte)? Bagaimana jika dibandingkan dengan total RAM? Apa pengaturan PG Anda, termasuk shared_buffers dan effective_cache_size? Apakah ini server khusus? Jika Anda memiliki meja berkapasitas 250 gigs dan RAM sekitar 10 GB, artinya Anda hanya dapat memuat 4% meja.
Apakah ada kolom yang biasa digunakan untuk memfilter, seperti status atau tanggal? Dapatkah Anda mengidentifikasi perangkat kerja yang paling umum digunakan (seperti hanya bulan lalu)? Jika demikian, pertimbangkan untuk mempartisi atau mengelompokkan kolom-kolom ini, dan pasti mengindeksnya. Pada dasarnya, Anda mencoba untuk memastikan bahwa sebanyak mungkin perangkat kerja yang sesuai dengan RAM.
Hindari memindai tabel dengan cara apa pun jika tidak sesuai dengan RAM. Jika Anda benar-benar membutuhkan akses acak, satu-satunya cara akses tersebut dapat digunakan adalah perangkat keras yang sangat canggih. Anda memerlukan konfigurasi penyimpanan/RAM persisten yang dapat membaca 250 GB dalam waktu yang wajar.