

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Perguntas frequentes
<a name="faq"></a>

Encontre respostas para perguntas frequentes sobre o ajuste do desempenho da consulta.

## O que é EXPLAIN?
<a name="q-1"></a>

`EXPLAIN`é uma palavra-chave que você acrescenta a uma consulta PostgreSQL (`SELECT`,, `UPDATE``INSERT`,`DELETE`) para gerar um plano de consulta. O plano de consulta do PostgreSQL detalha como o banco de dados pretende executar a consulta. Esse plano inclui informações sobre a ordem de uma varredura de tabela, uso de índices e junções.

Use o plano de consulta para identificar possíveis gargalos, otimizar consultas e melhorar o desempenho geral. Ao analisar o plano de consulta, considere os seguintes fatores:
+ Abordagens de acesso à tabela
+ Junte abordagens
+ Condições do filtro
+ Operações de classificação
+ Uso do índice
+ Paralelismo
+ Statistics
+ Estimativas de custo
+ Linhas recuperadas de cada etapa
+ Distribuição de dados

Para obter mais informações sobre [EXPLAIN](https://www.postgresql.org/docs/current/using-explain.html), consulte a documentação do PostgreSQL.

## O que é EXPLAIN ANALYZE?
<a name="q-2"></a>

Quando você adiciona um prefixo `EXPLAIN ANALYZE` a uma consulta e executa a consulta, o PostgreSQL executa a consulta e retorna o plano de consulta e as estatísticas de tempo de execução. O tempo de execução real, as linhas processadas em cada etapa e outras informações relevantes são exibidas junto com o plano de consulta. O uso `EXPLAIN ANALYZE` em um banco de dados de produção deve ser feito com cuidado, pois a execução da consulta pode afetar o desempenho do banco de dados durante a análise.

Para obter mais informações sobre [EXPLAIN ANALYZE](https://www.postgresql.org/docs/current/sql-explain.html#:~:text=The%20ANALYZE%20option%20causes%20the,of%20rows%20it%20actually%20returned.), consulte a documentação do PostgreSQL.

## O que é agrupamento no PostgreSQL?
<a name="q-3"></a>

No PostgreSQL, um agrupamento é um conjunto de regras para determinar como as strings são comparadas e classificadas. O agrupamento define a ordem na qual os caracteres são considerados nas comparações, considerando as regras e conversões específicas do idioma.

Para obter mais informações sobre [agrupamento](https://www.postgresql.org/docs/current/collation.html#:~:text=The%20collation%20feature%20allows%20specifying,be%20changed%20after%20its%20creation.), consulte a documentação do PostgreSQL.

## O que é um CTE?
<a name="q-4"></a>

Em um banco de dados PostgreSQL, uma Expressão de Tabela Comum (CTE) é um conjunto de resultados temporário nomeado que você pode referenciar. Os CTEs fornecem uma maneira de criar consultas SQL mais legíveis e modulares dividindo a lógica complexa em unidades menores e nomeadas.

Para obter mais informações sobre [CTEs](https://www.postgresql.org/docs/current/queries-with.html), consulte a documentação do PostgreSQL.

## Quais são as categorias de funções no PostgreSQL?
<a name="1-5"></a>

Cada função do PostgreSQL tem uma classificação de volatilidade, com as possibilidades `VOLATILE` sendo,, ou: `STABLE` `IMMUTABLE`
+ **VOLÁTIL** — Uma `VOLATILE` função pode fazer qualquer coisa, inclusive modificar o banco de dados. Ele pode retornar resultados diferentes em chamadas sucessivas com os mesmos argumentos. O otimizador não faz suposições sobre o comportamento de tais funções. Uma consulta usando uma função volátil reavaliará a função em cada linha em que seu valor for necessário.
+ **ESTÁVEL** — Uma `STABLE` função não pode modificar o banco de dados. É garantido que retornará os mesmos resultados com os mesmos argumentos para todas as linhas em uma única instrução. Quando você usa essa classificação, o otimizador pode otimizar várias chamadas da função para uma única chamada. Em particular, é seguro usar uma expressão que contenha essa função em uma condição de varredura de índice. (Como uma varredura de índice avaliará o valor de comparação apenas uma vez, não uma vez em cada linha, não é válido usar uma `VOLATILE` função em uma condição de varredura de índice.)
+ **IMUTÁVEL** — Uma `IMMUTABLE` função não pode modificar o banco de dados e tem a garantia de retornar os mesmos resultados com os mesmos argumentos para sempre. Quando você usa essa classificação, o otimizador pode pré-avaliar a função quando uma consulta a chama com argumentos constantes. Por exemplo, uma consulta como a `SELECT ... WHERE x = 2 + 2` pode ser simplificada à primeira vista`SELECT ... WHERE x = 4`, porque a função subjacente ao operador de adição de números inteiros está marcada`IMMUTABLE`.

`VOLATILE`é o padrão se o `CREATE FUNCTION` comando não especificar uma categoria. Para obter mais informações sobre os [tipos de função](https://www.postgresql.org/docs/16/sql-createfunction.html), consulte a documentação do PostgreSQL.