Terlepas dari berapa banyak indeks yang telah Anda buat pada relasi, hanya satu dari mereka yang akan digunakan dalam kueri tertentu (yang mana bergantung pada kueri, statistik, dll). Jadi dalam kasus Anda, Anda tidak akan mendapatkan keuntungan kumulatif dari membuat dua indeks kolom tunggal. Untuk mendapatkan performa maksimal dari indeks, saya sarankan untuk menggunakan indeks komposit pada (lokasi, stempel waktu).
Perhatikan, kueri seperti ... WHERE timestamp BETWEEN smth AND smth
tidak akan menggunakan indeks di atas saat kueri seperti ... WHERE location = 'smth'
atau ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth
akan. Itu karena atribut pertama dalam indeks sangat penting untuk pencarian dan pengurutan.
Jangan lupa tampil
ANALYZE;
setelah pembuatan indeks untuk mengumpulkan statistik.
Pembaruan: Sebagai @MondKin disebutkan dalam komentar kueri tertentu sebenarnya dapat menggunakan beberapa indeks pada relasi yang sama. Misalnya, kueri dengan OR
klausa seperti a = 123 OR b = 456
(dengan asumsi bahwa ada indeks untuk kedua kolom). Dalam hal ini postgres akan melakukan pemindaian indeks bitmap untuk kedua indeks, membangun gabungan bitmap yang dihasilkan dan menggunakannya untuk pemindaian heap bitmap. Dalam kondisi tertentu skema yang sama dapat digunakan untuk AND
kueri tetapi alih-alih penyatuan akan ada persimpangan.