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!
Wesley Mota
Latest posts by Wesley Mota (see all)
- Free Blackjack No Download: Appreciate Blackjack Anytime, Anywhere - novembro 25, 2024