Bez ohledu na to, kolik indexů jste vytvořili na relaci, bude v určitém dotazu použit pouze jeden z nich (který závisí na dotazu, statistice atd.). Takže ve vašem případě byste nezískali kumulativní výhodu z vytvoření dvou samostatných sloupcových indexů. Chcete-li získat maximální výkon z indexu, doporučil bych použít složený index na (umístění, časové razítko).
Všimněte si, že dotazy jako ... WHERE timestamp BETWEEN smth AND smth
nebude používat výše uvedený index při dotazech jako ... WHERE location = 'smth'
nebo ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth
vůle. Je to proto, že první atribut v indexu je rozhodující pro vyhledávání a řazení.
Nezapomeňte vystupovat
ANALYZE;
po vytvoření indexu za účelem shromažďování statistik.
Aktualizace: Jako @MondKin uvedené v komentářích, určité dotazy mohou ve skutečnosti používat několik indexů ve stejném vztahu. Dotazujte se například pomocí OR
klauzule jako a = 123 OR b = 456
(za předpokladu, že pro oba sloupce existují indexy). V tomto případě by postgres provedl skenování bitmapových indexů pro oba indexy, vytvořil sjednocení výsledných bitmap a použil je pro skenování haldy bitmap. Za určitých podmínek může být stejné schéma použito pro AND
dotazy, ale místo spojení by došlo k průniku.