PREPARE

Nome

PREPARE -- prepara um comando para execução

Sinopse

PREPARE nome [ (tipo_de_dado [, ...] ) ] AS comando

Descrição

O comando PREPARE cria um comando preparado. Um comando preparado é um objeto no lado servidor que pode ser usado para otimizar o desempenho. Quando o comando PREPARE é executado, o comando especificado é analisado, reescrito e planejado. Após isso, quando forem emitidos comandos EXECUTE o comando preparado precisa apenas ser executado. Assim os estágios de análise, reescrita e planejamento são realizados apenas uma vez, e não todas as vezes que o comando é executado.

Os comandos preparados podem receber parâmetros: valores que são substituídos no comando quando este é executado. Para incluir parâmetros no comando preparado, deve ser fornecida uma lista de tipos de dado no comando PREPARE e no próprio comando a ser preparado, referenciando os parâmetros pela sua posição utilizando $1, $2, etc. Ao executar o comando devem ser especificados os valores reais destes parâmetros no comando EXECUTE. Consulte o comando EXECUTE para obter mais informações.

Os comandos preparados somente continuam existindo enquanto a sessão de banco de dados corrente existir. Quando a sessão termina o comando preparado é esquecido e, portanto, deve ser recriado antes de poder ser usado novamente. Isto significa, também, que o mesmo comando preparado não pode ser usado simultaneamente por vários clientes do banco de dados; entretanto, cada cliente pode criar e usar o seu próprio comando preparado.

A maior vantagem de desempenho dos comandos preparados acontece quando uma única sessão é usada para processar um grande número de comandos semelhantes. A diferença no desempenho é particularmente significativa quando os comandos possuem um plano ou reescrita complexos como, por exemplo, um comando envolvendo a junção de muitas tabelas, ou requerendo a aplicação de várias regras. Se o comando for relativamente simples de ser planejado e reescrito, e relativamente dispendioso para ser executado, fica mais difícil perceber a vantagem de desempenho dos comandos preparados.

Parâmetros

nome
Um nome arbitrário dado a este comando preparado. Deve ser único dentro da mesma sessão, sendo usado em seguida para executar ou remover o comando preparado anteriormente.
tipo_de_dado
O tipo de dado do parâmetro do comando preparado. Para fazer referência aos parâmetros no comando preparado são usados $1, $2, etc.
comando
Um entre SELECT, INSERT, UPDATE ou DELETE.

Observações

Em algumas situações o plano de comando produzido para o comando preparado será inferior ao plano de comando que seria escolhido se o comando fosse submetido e executado normalmente. Isto se deve ao fato de quando o comando é planejado, e o planejador tenta determinar o plano de comando ótimo, os valores verdadeiros dos parâmetros especificados no comando não estão disponíveis. O PostgreSQL coleta estatísticas sobre a distribuição dos dados na tabela, e pode usar valores constantes no comando para fazer suposições sobre o resultado provável da execução do comando. Como estes dados não estão disponíveis ao planejar comandos preparados com parâmetros, o plano escolhido pode ser inferior ao ótimo. Para examinar o plano de comando escolhido pelo PostgreSQL para o comando preparado, deve ser utilizado o comando EXPLAIN EXECUTE.

Para obter mais informações sobre planejamento de comandos e estatísticas coletadas pelo PostgreSQL para esta finalidade, veja a documentação do comando ANALYZE .

Compatibilidade

O padrão SQL inclui o comando PREPARE, mas apenas para utilização na linguagem SQL incorporada (embedded). Esta versão do comando PREPARE também utiliza uma sintaxe um pouco diferente.

SourceForge.net Logo