typescript - Hur förbättrar man latensen i denna enkla fråga?
Jag har en samling på ungefär 112 000 städer i Firestore, och jag vill slå upp en stad baserat på countryCode med funktionen nedan.
Om jag tidtar denna funktion, utan några konfigurerade index i Firebase-konsolen, tar den ungefär 1100 ms. Om jag skapar ett index som sorterar på namn och countryCode, tar funktionen ungefär 950 ms.
Jag testar från Europa och servern är i USA.
Är detta förväntat beteende? Vad skulle vara det bästa sättet att förbättra latensen för denna fråga?
Jag skulle kunna sätta upp en annan databasinformation i Europa, men jag tvivlar på att det skulle göra en stor skillnad. En enkel id-uppslagning tar ungefär 200 ms på samma databas, så jag skulle förvänta mig att minst 800 ms av tiden inte har att göra med rundresans latens.
async function getIdForCity(name: string, countryCode: string) {
console.time("Get city id");
const snapshot = await db
.collection("cities")
.where("name", "==", name)
.where("countryCode", "==", countryCode)
.get();
if (snapshot.size === 0) {
throw new Error(
`Unable to find city with name ${name} and countryCode ${countryCode}`
);
}
if (snapshot.size > 1) {
throw new Error(
`There are multiple (${
snapshot.size
}) cities with name ${name} and countryCode ${countryCode}`
);
}
const cityId = snapshot.docs[0].id;
console.timeEnd("Get city id");
console.log(`City id for ${name}, ${countryCode}: ${cityId}`);
return cityId;
}