1
resposta

Clausula with x performance

Olá, eu fiquei em duvida sobre a clausua "WITH" , ja vi queries que usam o with para criar as tabelas e depois fazem o select delas, podem me ajudar a entender essa clausula? Existe ganho de performance em criar as tabelas dentro do with, é algo similar a uma subquery? Em que situações podemos usar essa clausula e não um JOIN simples?

Veja o exemlo abaixo:

With 
    clientes AS(select CPF, NOME from [TABELA DE CLIENTES])
,    notas as (SELECT NUMERO,cpf, IMPOSTO from [NOTAS FISCAIS])
SELECT 
     clientes.NOME
    ,clientes.cpf
    ,notas.NUMERO
    ,notas.IMPOSTO
from clientes left join notas
on clientes.cpf=notas.cpf
1 resposta

Opa iai Felipe tudo bem? A clausula WITH significa que voce estará utilizando uma CTE ( Commom table expression ). Nao há ganho de performance mas sim uma maneira mais "facil" de se organizar na hora de criar uma query. Eu uso bastante, as vezes faço 8 9 10 joins e ja nao lembro de onde vem o que, entao em vez de eu ficar usando Aliases ( apelido de coluna ), eu ja faço uma CTE, e faço um select dela como se fosse uma tabela com campos normais. Por exemplo, em vez de ficar usando TabelaEtc4.Campotal, eu só uso "select campotal from CTE" (ou o que for o nome da CTE ).