Este recurso que existe de outras formas em diversos bancos de dados, permite que os resultados de uma consulta sejam recuperados no formato XML. Alem disso, dependendo das configuracoes dos parametros, e possivel fazer uma especie de pivoteamento transformando as linhas e colunas da consulta em uma unica string, usando delimitadores para colunas e linhas.Outro aspecto importante e que, atraves de FOR XML, os dados podem ser transformados para que sejam compartilhados com aplicacoes diversas.O ponto principal para conseguir este resultado e transformar o retorno com a funcao PATH() no final da instrucao. Para obter o resultado desejado, basta passar uma string vazia como parametro.Considere a consulta do exemplo anterior onde cada PERSON tinha um resumo com a soma das vendas dos anos 2005-2007 sendo exibidas em cada coluna. Vamos transformar esta consulta para que para cada nome seja retornada um texto onde os registros estao separados por ponto e virgula ; e as colunas por |.A consulta, usando FOR XML fica como e demonstrado a seguir.select concat(p.FirstName, ' ', p.LastName) as CompleteName , ( select concat(convert(varchar,year(soh.OrderDate)), '|', convert(varchar, sum(soh.TotalDue)), ';') from Sales.SalesOrderHeader soh join Sales.Customer cus on cus.CustomerID=soh.CustomerID join person.Person per on per.BusinessEntityID=cus.PersonID where per.BusinessEntityID=p.BusinessEntityID and soh.OrderDate between '2005-01-01 00:00:00' and '2007-12-31 23:59:59' group by year(soh.orderDate) for xml path('') ) as Vendasfrom Person.Person porder by CompleteNameNote que a consulta e menor que o exemplo anterior, embora o resultado basicamente o mesmo. O resultado final consiste do nome e sobrenome seguido de um texto onde cada par ano/somatoria esta separado pelo caractere | e cada registro por um ponto e virgula.Neste exemplo, as colunas da sub consulta sao unidas tambem pela funcao CONCAT() aplicando tambem os separadores de registro e de colunas.O ponto principal e a colocacao da instrucao FOR XML no final da consulta. O resultado da consulta esta demonstrado a seguir.Este recurso e bastante completo e cheio de detalhes. Recomendo a leitura da documentacao oficial para uma melhor compreensao. Um banco de dados com alto desempenho em todas as consultas e como a ciencia de construir foguetes: dificil, inexata e cada caso merece uma atencao especial. Por isso neste topico nao e possivel colocar o assunto em pauta, uma vez que demandaria um tempo muito grande. Por isso, serao tratados alguns casos que penalizam as consultas por nao utilizarem corretamente a indexacao do banco e que devem ser evitados ou mitigados sempre que forem encontrados.No final, colocarei uma dica sobre como construir indices eficientes no SQL Server, porque, infelizmente, nao basta que eles existam, tem de ser criados do jeito certo. Alerta sobre desempenho A preocupacao com o desempenho das consultas deve estar embutida no design do banco de dados. E muito mais dificil otimizar um banco com milhoes de registros com gargalos de desempenho e varios usuarios conectados o tempo todo. Verifique a previsao de crescimento do banco ao realizar seu projeto. (Ou peca que seu lider de projeto faca isso). LikeEsta instrucao permite que colocando o caractere curinga % no inicio, final ou em ambas as partes de uma expressao de busca na clausula WHERE, o mecanismo faca