Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O GitHub Copilot ajuda os programadores a otimizar consultas e analisar gargalos de desempenho sem precisar de conhecimentos internos de bases de dados, especialmente programadores sem profunda experiência em Transact-SQL (T-SQL). O GitHub Copilot pode decompor SQL complexo, interpretar planos de execução e sugerir estratégias de indexação ou oportunidades de refatoração. Os programadores podem manter as suas aplicações funcionais e com desempenho, mantendo-se focados na entrega de funcionalidades.
Introdução
Verifique se você está conectado a um banco de dados e se uma janela do editor ativo está aberta com a extensão MSSQL. Essa conexão permite que o participante do bate-papo @mssql compreenda o contexto do seu ambiente de banco de dados, permitindo sugestões precisas e sensíveis ao contexto. Sem uma conexão de banco de dados, o participante do bate-papo não terá o esquema ou o contexto de dados para fornecer respostas significativas.
Os exemplos a seguir usam o AdventureWorksLT2022 banco de dados de exemplo, que você pode baixar da home page de Exemplos e Projetos da Comunidade do Microsoft SQL Server .
Para obter melhores resultados, ajuste os nomes de tabelas e esquemas para corresponder ao seu próprio ambiente.
Certifique-se de que o chat inclui o prefixo @mssql . Por exemplo, digite @mssql seguido de a sua pergunta ou solicitação. Isso garante que o participante do bate-papo entenda que você está solicitando assistência relacionada ao SQL.
Otimize o desempenho com o GitHub Copilot
O GitHub Copilot oferece várias maneiras de ajudar os desenvolvedores a escrever código de banco de dados de alto desempenho e pronto para produção sem exigir profunda experiência em ajuste de consultas ou análise de plano de execução. Não importa se você está criando novos recursos ou investigando um problema de desempenho, o GitHub Copilot pode exibir insights, recomendar otimizações e ajudar a reestruturar consultas, tudo dentro do seu fluxo de trabalho existente no Visual Studio Code.
Aqui estão casos de uso comuns e exemplos do que você pode perguntar através do participante do bate-papo.
Otimizar consultas
Use o GitHub Copilot para identificar ineficiências em SQL ou em consultas de mapeamento objeto-relacional (ORM) e sugerir formas de melhorar o desempenho. O GitHub Copilot ajuda-te a aplicar as melhores práticas de T-SQL e ORM, desde reescrever consultas lentas até recomendar índices ou evitar anti-padrões como joins cartesianas, com base no teu contexto atual.
Exemplo básico
Optimize the following query:
SELECT *
FROM SalesLT.SalesOrderHeader
WHERE OrderDate > '2023-01-01';
Exemplo de melhoria de índice
Suggest indexing improvements for this query:
SELECT ProductID
FROM SalesLT.SalesOrderDetail
WHERE Quantity > 100;
Exemplo de melhoria de junção
Rewrite this query to avoid a Cartesian join. Make sure the new query follows T-SQL best practices:
SELECT * FROM Customers, Order;
Exemplo de seleção aninhada
Rewrite this Prisma query to avoid unnecessary nested selects and improve readability:
const orders = await prisma.salesOrderHeader.findMany({
where: {
orderDate: {
gt: new Date('2023-01-01')
}
}
});
Análise do plano de execução
Os planos de execução fornecem um detalhamento detalhado de como o mecanismo SQL processa consultas. O Copilot do GitHub pode ajudá-lo a interpretar planos de execução, identificar gargalos, como junções de loop aninhadas, e sugerir melhorias com base em padrões de consulta do mundo real e estratégias de indexação.
Você pode usar a seguinte consulta como um exemplo para gerar o plano de execução usando a opção de plano estimado/real na extensão MSSQL:
SELECT soh1.SalesOrderID AS OrderA,
soh2.SalesOrderID AS OrderB,
soh1.TotalDue AS TotalA,
soh2.TotalDue AS TotalB
FROM SalesLT.SalesOrderHeader AS soh1
CROSS JOIN SalesLT.SalesOrderHeader AS soh2
WHERE soh1.TotalDue < soh2.TotalDue
ORDER BY soh2.TotalDue DESC;
Inclua o máximo de contexto possível, selecionando a consulta no editor e incluindo o ficheiro sqlplan na janela de chat do GitHub Copilot, como mostrado nesta captura de ecrã.
According to the execution plan shared by my database expert, the following query is using a nested loop join which is affecting the performance of my app. Can you explain in simple terms why this might be happening? Additionally, suggest optimization strategies that could improve the query's performance.
Você pode usar a seguinte consulta como um exemplo para gerar o plano de execução usando a opção de plano estimado/real na extensão MSSQL:
SELECT c1.CustomerID,
c1.LastName,
c2.CustomerID AS MatchingCustomerID,
c2.LastName AS MatchingLastName
FROM SalesLT.Customer AS c1
INNER JOIN SalesLT.Customer AS c2
ON c1.LastName = c2.LastName
AND c1.CustomerID <> c2.CustomerID
OPTION (LOOP JOIN);
Inclua o máximo de contexto possível selecionando a consulta no editor e incluindo o sqlplan ficheiro na janela de chat do GitHub Copilot, como mostrado nesta captura de ecrã.
Explain the execution plan for this query that performs a join with a filter on TotalDue:
SELECT c.CustomerID,
c.FirstName,
c.LastName,
soh.SalesOrderID,
soh.TotalDue
FROM SalesLT.Customer AS c
INNER JOIN SalesLT.SalesOrderHeader AS soh
ON c.CustomerID = soh.CustomerID
WHERE soh.TotalDue > 500;
Reestruturação de consultas
Reestruturar consultas usando expressões de tabela comuns (CTEs) pode melhorar a legibilidade e a manutenibilidade, especialmente para lógicas complexas ou subconsultas aninhadas. O Copilot do GitHub pode ajudar a reescrever suas consultas existentes para usar CTEs, preservando a intenção e melhorando a clareza.
Exemplo de seleção interna para CTE
Rewrite this query using common table expressions (CTEs) to improve clarity:
SELECT *
FROM (SELECT ProductID,
SUM(Quantity) AS TotalQuantity
FROM Sales
GROUP BY ProductID) AS SubQuery;
Exemplo da cláusula HAVING para CTE
Rewrite the following query using a CTE (common table expression) to improve readability and maintainability:
SELECT soh.CustomerID,
COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader AS soh
WHERE soh.OrderDate > '2022-01-01'
GROUP BY soh.CustomerID
HAVING COUNT(*) > 5;
Exemplo de cláusula de agregação em CTE
Use a CTE to separate the aggregation logic from the filter condition in this query:
SELECT ProductID,
AVG(UnitPrice) AS AvgPrice
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(UnitPrice) > 50;
Cenários de desempenho com foco no código
Quando trabalha com ORMs como Entity Framework, Prisma ou Sequelize, o desempenho pode degradar-se se as consultas não estiverem otimizadas. O GitHub Copilot ajuda a detetar e resolver problemas como índices ausentes, filtragem ineficiente e problemas N+1 em fluxos de trabalho code-first.
Exemplo de Prisma
In a Prisma project, how would you ensure that queries filtering by `OrderDate` in `SalesOrderHeader` are using indexes effectively?
Exemplo de Entity Framework Core
Using Entity Framework Core, how can you analyze and optimize a LINQ query that retrieves the top 10 customers by total order value?
Exemplo de sequelização
In Sequelize, how do you restructure a query that fetches order history with product details to minimize N+1 query issues?
Partilhar a sua experiência
Para nos ajudar a refinar e melhorar o Copilot do GitHub para a extensão MSSQL, use o seguinte modelo de problema do GitHub para enviar seus comentários: Feedback do Copiloto do GitHub
Ao enviar comentários, considere incluir:
Cenários testados – Diga-nos em que áreas se focou, por exemplo, criação de esquemas, geração de consultas, segurança, localização.
O que funcionou bem – Descreva todas as experiências que foram suaves, úteis ou que excederam as suas expectativas.
Problemas ou bugs – Inclua quaisquer problemas, inconsistências ou comportamentos confusos. Capturas de ecrã ou gravações de ecrã são especialmente úteis.
Sugestões de melhoria – Compartilhe ideias para melhorar a usabilidade, expandir a cobertura ou melhorar as respostas do Copiloto do GitHub.
Conteúdo relacionado
- Extensão GitHub Copilot for MSSQL para Visual Studio Code
- Início Rápido: Usa o chat e sugestões inline do GitHub Copilot
- Quickstart: Gerar código
- Início rápido: Use o explorador de esquemas e o designer
- Início rápido: Use o construtor inteligente de consultas
- Quickstart: Use o explicador de lógica de negócio
- Quickstart: Analisador de segurança
- Quickstart: Ajuda de localização e formatação
- Guia Rápido: Gerar dados para testes e simulação
- Problemas conhecidos e de limitações