Subconsultas Indepenentes ou Autocontidas ou Subqueries Self-Contained
Subconsultas indepenentes também conhecidas como subconsultas autocontidas ou Subqueries Self-Contained em inglês permite realizar consultas dentro de outras consultas.
Estas subconsultass são executadas de forma independente da consulta externa e podem devolver um valor escalar, um conjunto de valores ou até mesmo um conjunto de tabelas.
Exemplo
Exemplos clássicos de uma subconsulta autocontida é quando se deseja comparar um valor de uma tabela com a média dos valores de outra tabela.
Uma subconsulta autocontida pode ser utilizada para devoler todos os produtos que têm um preço superior à média dos preços dos produtos. Neste caso, uma subconsulta seria usada para calcular a média dos preços e depois essa média seria usada na consulta principal para filtrar os produtos desejados.
SELECT *
FROM Production.Product
WHERE ListPrice > (SELECT AVG(ListPrice) FROM Production.Product);
-
Na cláusula
FROM
, uma subconsulta pode ser usada para definir uma tabela temporária sobre a qual a consulta externa irá operar. -
Na cláusula
SELECT
, as subconsultas podem ser utilizadas para fornecer valores para as colunas da consulta principal.
Em qualquer lugar
É importante frisar que as subconsultas autocontidas possam ser utilizadas em qualquer lugar onde uma expressão é permitida, elas devem devolver um único valor quando utilizadas com operadores de comparação como =
, <
ou ** >
**.
Além disso, as subconsultass autocontidas podem ser muito úteis em situações onde se deseja isolar a lógica de uma parte da consulta, tornando o código mais legível e fácil de manter.
Por exemplo, se você tem uma consulta complexa que necessita de vários cálculos intermediários, pode-se utilizar subconsultas autocontidas para encapsular estes cálculos, simplificando a consulta principal.
Uso excessivo de subconsultas
É importante compreender que o uso excessivo de subconsultas pode afetar o desempenho da consulta. Portanto, é sempre recomendável avaliar se uma junção (JOIN
) não seria mais apropriada para o caso em questão. Em alguns cenários, especialmente quando se verifica a existência de valores, uma junção pode oferecer melhor desempenho do que uma subconsulta.
Tem de garantir que as subconsultas estejam corretamente indexadas e que as colunas utilizadas nas condições de filtragem estejam otimizadas para pesquisas. Isso pode ser alcançado através da criação de índices apropriados nas tabelas envolvidas. A otimização de subconsultas é um tópico avançado e essencial para garantir a eficiência e o desempenho das consultas no SQL Server.