Dicas

Dúvida do DBA subconsulta no SQL Server.

Dúvida do DBA subconsulta no SQL Server

Saiba o que é uma subconsulta no SQL Server.

Uma subconsulta do SQL Server e uma consulta dentro de um SELECT, INSERT, DELETE OU UPDATE. ou uma consulta dentro de outra consulta. Veja um exemplo de subconsulta abaixo:

USE AdventureWorks2014;
GO
SELECT Orders.SalesOrderID, Orders.OrderDate,
    (SELECT MAX(OrdDetails.UnitPrice)
     FROM Sales.SalesOrderDetail AS OrdDetails
     WHERE Orders.SalesOrderID = OrdDetails.SalesOrderID) AS MaxUnitPrice
FROM Sales.SalesOrderHeader AS Orders

Esse tipo de consulta que eu coloquei no exemplo acima é o mais simples e também uma das mais utilizadas. Você pode utilizar também em inner joins, o que eu já vi em muitos casos no dia a dia trabalhando, pesquisando nos documentos da Microsoft, eles dizem que não há diferença entre utilizar inner join normal ou subconsulta com relação a performance.

Se você executar as duas consultas abaixo perceberá que o plano de execução do SQL Server é o mesmo.

/* Consulta usando subconsulta. */
SELECT Name
FROM Production.Product
WHERE ListPrice =
    (SELECT ListPrice
     FROM Production.Product
     WHERE Name = 'Chainring Bolts' )
 
/* Consulta usando Join que retorna o mesmo resultado */
SELECT Prodc. Name
FROM Production.Product AS Prodc
     JOIN Production.Product AS Pordc2
       ON (Prodc.ListPrice = Pordc2.ListPrice)
WHERE Pordc2. Name = 'Chainring Bolts'

Uma subconsulta dentro de um SELECT tem:

  • Um SELECT incluindo uma lista de colunas.
  • Um FROM incluindo tabelas ou views.
  • Um WHERE (opcional).
  • Um GROUP BY (opcional).
  • Um HAVING (opcional).

Uma subconsulta pode ter até 32 níveis, ou seja você pode ter até 32 consultas dentro de uma consulta.

Uma outra hora em que a consulta pode aparecer muitas vezes é nas instruções NOT IN, ANY ou ALL ou NOT EXISTS.

São de fato muito úteis, mas com questões de performance eu sempre recomendo usá-las com moderação.

Espero que tenham gostado pessoal, se esqueci alguma coisa podem colocar nos comentários sempre são bem vindos.

Grande abraço a todos!

Dúvida do DBA subconsulta no SQL Server.
Wesley Mota

Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Share
Published by
Wesley Mota

Recent Posts

Dicas de como a função UPPER() no SQL Server pode degradar a performance

Saiba como a função UPPER() no SQL Server pode degradar a performance das suas consultas…

6 anos ago

Como diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE

Saiba agora mesmo como você pode diminuir o RESOURCE_SEMAPHORE_QUERY_COMPILE no SQL Server. Recentemente eu trabalhei em…

8 anos ago

Funções de Data no SQL Server: Conheça a DATEADD ()

Nós DBA' e desenvolvedores quase sempre temos que trabalhar com datas quando se trata de…

8 anos ago

3 Maneiras Para Proteger a Conta SA no SQL Server

Quais são as diferentes maneiras de proteger o login Senha do Administrador (SA)? Todos estão…

8 anos ago

Alterar a Senha de SA do SQL Server: Como Fazer?

Com os direitos que o login sa tem por padrão no SQL Server, é obrigatório…

8 anos ago

Segurança Para DBAs e Administradores no SQL SERVER

Como um DBA, você tem a responsabilidade de garantir a segurança do aplicativo e dos…

8 anos ago