Voorbereide instructies aan de serverzijde verbruiken bronnen aan de serverzijde om het uitvoeringsplan voor de instructie op te slaan. De drempel biedt een heuristiek die ervoor zorgt dat uitspraken worden voorbereid die eigenlijk "vaak" worden gebruikt. De definitie van "vaak" is standaard 5.
Houd er rekening mee dat door de server voorbereide instructies slechte uitvoeringsplannen kunnen veroorzaken, omdat ze niet zijn gebaseerd op de parameters die tijdens de voorbereiding zijn doorgegeven. Als de parameters die worden doorgegeven aan een voorbereide instructie een andere selectiviteit hebben op een bepaalde index (bijvoorbeeld), dan kan het algemene queryplan van de voorbereide instructie niet optimaal zijn. Als een ander voorbeeld, als u een situatie hebt waarin de uitvoering van de query veel hoger is dan de kosten om een uitlegplan te maken, en het uitlegplan niet correct is ingesteld vanwege een gebrek aan bindingsparameters, kunt u er beter aan doen om het niet te gebruiken door de server opgestelde verklaringen.
Wanneer de bestuurder de drempel bereikt, zal hij de verklaring als volgt voorbereiden:
if (!oneShot)
{
// Generate a statement name to use.
statementName = "S_" + (nextUniqueID++);
// And prepare the new statement.
// NB: Must clone the OID array, as it's a direct reference to
// the SimpleParameterList's internal array that might be modified
// under us.
query.setStatementName(statementName);
query.setStatementTypes((int[])typeOIDs.clone());
}
De naam van de instructie wordt verzonden als onderdeel van het wire-protocol, dat Postgres vertelt om het server-side voor te bereiden.