No contexto do PostgreSQL, analise o comando SQL a seguir. CREATE TABLE TESTE_X PARTITION OF TESTE FOR VALUES IN ('SP', 'RJ'); Esse comando tem por finalidade:
- A)a implementação do particionamento da tabela TESTE pelo critério conhecido como List;
Correta, porque FOR VALUES IN ('SP', 'RJ') caracteriza particionamento por lista (LIST) na tabela TESTE.
- B)a implementação do particionamento da tabela TESTE_X pelo critério conhecido como Range Partitioning;
Errada, porque particionamento por RANGE usa limites do tipo FROM ... TO ..., não valores listados.
- C)a criação de uma tabela virtual, somente leitura, segundo o conceito de Table View, similarmente ao emprego das views derivadas de consultas SQL;
Errada, porque o comando cria uma partição de tabela, não uma view nem uma tabela virtual somente leitura.
- D)a implementação de particionamentos de índices clusterizados (Clusterized indexes), usados para otimização de consultas sobre tabelas baseadas em intervalos de chaves de acesso;
Errada, porque PostgreSQL não trata esse comando como criação de índice clusterizado, e sim de partição de tabela.
- E)a definição de uma nova tabela, TESTE_X, somente leitura, cuja estrutura é copiada da tabela TESTE e é instanciada inicialmente com todas as linhas cujos valores das chaves primárias são iguais a “SP” ou “RJ”.
Errada, porque não se trata de uma nova tabela comum com cópia de estrutura e carga inicial, mas de uma partição vinculada à tabela pai.
Gabarito: A
No PostgreSQL, particionamento é a técnica de dividir uma tabela grande em partes menores, chamadas partições, para organizar e otimizar os dados. Aqui, o comando CREATE TABLE TESTE_X PARTITION OF TESTE FOR VALUES IN ('SP', 'RJ') indica claramente uma partição do tipo LIST, porque a divisão é feita por valores específicos previamente definidos. Em outras palavras, a tabela TESTE continua sendo a tabela pai, e TESTE_X nasce como uma partição que receberá apenas as linhas cujos valores de particionamento estejam em 'SP' ou 'RJ'. O detalhe mais importante é o FOR VALUES IN, que é a marca registrada do particionamento por lista no PostgreSQL. Já no particionamento por RANGE, o comando usaria algo como FROM ... TO ..., porque a lógica seria por intervalo, e não por valores exatos. A sintaxe entrega a resposta quase de bandeja, como aquelas questões que piscam e dizem: "é aqui que mora a pegadinha". Além disso, o comando não cria view, não cria índice clusterizado e não gera uma tabela independente comum. Ele define uma partição física da tabela principal, seguindo o modelo nativo de particionamento do PostgreSQL. Portanto, o gabarito está correto ao apontar a implementação do particionamento da tabela TESTE pelo critério List.