Independentemente de quantos índices você criou na relação, apenas um deles será usado em uma determinada consulta (qual depende da consulta, estatísticas etc). Portanto, no seu caso, você não obteria uma vantagem cumulativa ao criar dois índices de coluna única. Para obter o máximo de desempenho do índice, sugiro usar o índice composto em (local, carimbo de data/hora).
Observe que consultas como
... WHERE timestamp BETWEEN smth AND smth
não usará o índice acima enquanto consultas como ... WHERE location = 'smth'
ou ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth
vai. É porque o primeiro atributo no índice é crucial para pesquisar e classificar. Não se esqueça de realizar
ANALYZE;
após a criação do índice para coletar estatísticas.
Atualização: Como @MondKin mencionado nos comentários, certas consultas podem realmente usar vários índices na mesma relação. Por exemplo, consulte com
OR
cláusulas como a = 123 OR b = 456
(assumindo que existem índices para ambas as colunas). Nesse caso, o postgres executaria varreduras de índice de bitmap para ambos os índices, construiria uma união de bitmaps resultantes e a usaria para varredura de heap de bitmap. Em certas condições, o mesmo esquema pode ser usado para AND
consultas, mas em vez de união haveria uma interseção.